早上好,我正在尝试编写XSLT 1.0 trasformation以转换此
<foo>
<document>
<content name="bar1">Bar1</content>
<content name="bar2">Bar2</content>
<content name="bar3">Bar3</content>
...
</document>
</foo>
到这个
<foo>
<document>
<content name="bar1" set="top">Bar1</content>
<content name="bar2" set="top">Bar2</content>
<content name="bar3" set="top">Bar3</content>
...
</document>
</foo>
所以我尝试了此XSLT转换
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<foo>
<document>
<xsl:template match="/document/*">
<xsl:copy>
<xsl:apply-templates />
<xsl:attribute name="set" select="'top'" />
</xsl:copy>
</xsl:template>
</document>
</foo>
但可悲的是它没有起作用
我尝试在XPATH和XSLT指南中进行了很多搜索,但我无法获得这项工作,有人可以帮助我吗?
您的XSLT语法已关闭。有很多方法可以做到这一点,这是一种相当通用的方法:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="content">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:attribute name="set">top</xsl:attribute>
<xsl:value-of select="." />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
第一个模板是一个身份模板;第二个模板匹配content
节点,复制它们,其属性,并添加属性set="top"
和元素的内容。