假设您有一个像
这样的xml文档<parents>
<parent>
<element />
<element />
</parent>
<parent>
<element />
<element />
</parent>
</parents>
在处理过程中我需要知道文档中的元素是1, 2, 3, 4
,而不是那个,但调用position()
将返回1, 2, 1, 2
。通常我会修改xml,但是,在这种情况下,它是不可能的,当我处理父2时,我不知何故需要知道它是第一个元素,实际上是元素3
。
谢谢, -c
答案 0 :(得分:4)
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="element">
<xsl:copy>
<xsl:number level="any" count="element"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<parents>
<parent>
<element />
<element />
</parent>
<parent>
<element />
<element />
</parent>
</parents>
产生想要的结果:
<parents>
<parent>
<element>1</element>
<element>2</element>
</parent>
<parent>
<element>3</element>
<element>4</element>
</parent>
</parents>
答案 1 :(得分:1)
知道了,实际上非常简单
<xsl:value-of select="count(preceding::element)"/>