我有一个源XML文档:
Session
使用哪种XSLT转换将上述XML文档转换为此:
<A>
<B VALUE = "1"/>
<B VALUE = "1"/>
</A>
答案 0 :(得分:0)
我将假设VALUE
属性的值应该是其/A/B
序列中父元素的位置
然后进行此转换:
<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="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="B/@VALUE[not(. = count(../preceding-sibling::B) +1 )]">
<xsl:attribute name="VALUE">
<xsl:value-of select="count(../preceding-sibling::B) + 1"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<A>
<B VALUE = "1"/>
<B VALUE = "1"/>
</A>
产生所需结果:
<A>
<B VALUE="1"/>
<B VALUE="2"/>
</A>