我想用xslt添加每个element
的数量。
我的XML结构如下:
<root>
<element1/>
<element2/>
<element3/>
</root>
它应该在浏览器中显示如下:
[1] element1
[2] element2
[3] element3
我用<xsl:value-of select="position()"/>
尝试过,但是这个数字翻了一倍,看起来像这样:
[2] element1
[4] element2
[6] element3
我做错了什么?还有另一种可能性来获得每个element
的实际位置吗?
这是我的XSL:
<xsl:template match="/root/*">
<p>
<xsl:element name="div">
[<xsl:value-of select="position()" />]
<xsl:attribute name="class">entry<xsl:value-of select="@type"/></xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</p>
</xsl:template>
答案 0 :(得分:1)
由于text()
个节点,这个数字翻了一番。请尝试使用xsl:number
代替...
<div>[<xsl:number count="*"/>] <xsl:value-of select="name()"/></div>
此外,您不能将xsl:attribute
放在现在的位置,因为您已经输出了该元素的子元素。你可以做这样的事情(尽管你不会得到xsl:apply-templates
的名字)......
<p>
<div class="entry{@type}">
[<xsl:number count="*"/>]
<xsl:apply-templates/>
</div>
</p>