gpt4 book ai didi

xml - xsl :value-of used as xsl:element name

转载 作者:数据小太阳 更新时间:2023-10-29 01:46:15 25 4
gpt4 key购买 nike

我有一个带有列表结构的传入 XML 文件:

<list>
<listItem>
<name>elementOne</name>
<value>elementOneValue</name>
</listItem>
<listItem>
<name>elementTwo</name>
<value>elementTwoValue</name>
</listItem>
</list>

我正在尝试将其转换为这种结构:

<elementOne>elementOneValue</elementOne>
<elementTwo>elementTwoValue</elementTwo>

用 XSL 实现这个逻辑很简单,但我遇到了麻烦。

<xsl:for-each select="/list/listItem">
<xsl:element name="<xsl:value-of select="name"/>">
<xsl:value-of select="value"/>
</xsl:element>
</xsl:for-each>

不起作用,因为我假设顺序双引号打破了 <xsl:element>标签

<xsl:for-each select="/list/listItem">
<<xsl:value-of select="name"/>>
<xsl:value-of select="value"/>
</<xsl:value-of select="name"/>>
</xsl:for-each>

不起作用,因为我不能使用 <<>>

<xsl:for-each select="/list/listItem">
&lt;<xsl:value-of select="name"/>&gt;
<xsl:value-of select="value"/>
&lt;/<xsl:value-of select="name"/>&gt;
</xsl:for-each>

不起作用,因为我在代码中以 > 和 < 而不是可解析的 XML 结尾 <> .我希望这是一个非常简单的解决方案,但我无法在互联网上找到它的任何记录。我忽略的简单修复是什么?

最佳答案

这是一个完整而简短的解决方案,使用 <xsl:element> XSLT指令:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="listItem">
<xsl:element name="{name}">
<xsl:value-of select="value"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时(更正为格式正确):

<list>
<listItem>
<name>elementOne</name>
<value>elementOneValue</value>
</listItem>
<listItem>
<name>elementTwo</name>
<value>elementTwoValue</value>
</listItem>
</list>

产生了想要的结果:

<elementOne>elementOneValue</elementOne>
<elementTwo>elementTwoValue</elementTwo>

请注意:

  1. <xsl:element>的使用指令创建一个静态未知名称的元素。

  2. 使用AVT ( Attribute-Value-Template ) 来指定name以紧凑且更易读的方式显示属性。

  3. 如果 elementOne 的字符串值可能引发错误elementTwo不遵守元素名称 (QName) 的词汇/句法规则。

关于xml - xsl :value-of used as xsl:element name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708551/

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