gpt4 book ai didi

xml - 多个元素到平面字符串转换

转载 作者:数据小太阳 更新时间:2023-10-29 03:00:30 26 4
gpt4 key购买 nike

我希望从源 xml 转换多个元素,并将它们组合到逗号分隔文本中的单个目标字符串元素中。

条件Source Inputs 是 boolean 类型,只有当值为 true 时它才应该包含在目标列表中

例如XML

<Root-Element>
<EnggTypes>
<Engg1>true</Engg1>
<Engg2>true</Engg2>
<Engg3>false</Engg3>
<Engg4>false</Engg4>
<Engg5>true</Engg5>
</EnggTypes>
</Root-Element>

预期转换

<Root-Element>
<RoleTypes>Role1,Role2,Role5</RoleTypes>
</Root-Element>

希望在 XSL 1.0 或 2.0 中实现相同的目标

我开始想太多,并尝试在目标端使用一个变量,看看我是否可以做一些选择/何时使用以前的值构造字符串并连接,但似乎这不会起作用,因为变量值一旦设置就无法更改!

<xsl:variable name="roleVar">
<xsl:if test="Engg1/text()='true'">Role1</if>
<xsl:if test="Engg2/text()='true'">concat(roleVar,",",Role2)</if>
<xsl:if test="Engg3/text()='true'">concat(roleVar,",",Role3)</if>
<xsl:if test="Engg4/text()='true'">concat(roleVar,",",Role4)</if>
<xsl:if test="Engg5/text()='true'">concat(roleVar,",",Role5)</if>
</xsl:variable>

感谢任何意见。

提前致谢

最佳答案

您可以选择这些元素并在一个表达式中构造值:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="EnggTypes">
<xsl:copy>
<xsl:value-of select="*[. = 'true']/concat('Role', replace(local-name(), '[^0-9]+', ''))" separator=","/>
</xsl:copy>
</xsl:template>

</xsl:transform>

http://xsltransform.net/bEzjRJR/1

<Root-Element>
<EnggTypes>Role1,Role2,Role5</EnggTypes>
</Root-Element>

关于xml - 多个元素到平面字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com