我有以下XML文档:
<root someAttribute="someValue" />
现在我想使用XSLT添加标签,以便文档看起来像这样:
<root someAttribute="someValue">
<item>TEXT</item>
</root>
如果我再次重复使用XSLT,它应该只添加另一个项目:
<root someAttribute="someValue">
<item>TEXT</item>
<item>TEXT</item>
</root>
这听起来很容易,不是吗?这是我尝试过很多东西后得到的最好的东西:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:param name="message" />
<xsl:output method="xml" encoding="utf-8"/>
<xsl:template match="/*">
<xsl:copy>
<xsl:copy-of select="*"/>
<item>
<xsl:value-of select="$message" />
</item>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
它确实/几乎/我所要求的,除了它“忘记”根元素的属性。我在stackoverflow和其他地方找到了许多其他解决方案,这些解决方案与我的解决方案有共同点,它们会松散根元素的属性。我该如何解决这个问题?
答案 0 :(得分:1)
您目前只转换子节点,而不是属性。
<xsl:template match="root">
<xsl:copy>
<xsl:copy-of select="node()|@*"/> <!-- now does attrs too -->
<item>
<xsl:value-of select="$message" />
</item>
</xsl:copy>
</xsl:template>