我有一个输入xml,说:
<myxml>
<myelement id="1" />
<myelement id="2" />
<myelement id="3" />
</myxml>
我想创建一个XSLT,创建一个不同形式的输出xml,比如说:
<theirxml>
<theirelement id="1" />
<theirelement id="2" />
<theirelement id="3" />
</theirxml>
因为我无法在标签内创建带标签的xslt(例如“<theirelement id =”<xslt:...>“>”我找到了一种方法,用CDATA进行如下操作(仅提供相关部分) of xslt):
<xsl:for-each select="myxml/myelement">
<xsl:text><![CDATA[<theirelement id="]]></xsl:text><xsl:value-of select="@name" /><xsl:text><![CDATA[" />]]></xsl:text>
</xsl:for-each>
但是,生成的输出不包含“<theirelement ...”而是“&lt; theirelement ...” . 我需要输出实际包含“<”而不是“&lt;” (同样适用于“>”和“&gt;”) .
原因,顺便说一下,因为这个过程的输出是一些程序的输入,当标签被转义为“&lt; tag&gt;”时,它无法读取xml .
任何帮助将不胜感激!
2 回答
这是一个执行所需转换的样式表:
来自@ fred02138的解决方案可以简化为:
大括号中的构造是一个“属性值模板”,以防您想在XSLT引用中查找它 .