如何在xsl:for-each循环中获取反映当前处理的元素数量的计数器。
例如,我的源XML是
<books>
<book>
<title>The Unbearable Lightness of Being </title>
</book>
<book>
<title>Narcissus and Goldmund</title>
</book>
<book>
<title>Choke</title>
</book>
</books>
我想要得到的是:
<newBooks>
<newBook>
<countNo>1</countNo>
<title>The Unbearable Lightness of Being </title>
</newBook>
<newBook>
<countNo>2</countNo>
<title>Narcissus and Goldmund</title>
</newBook>
<newBook>
<countNo>3</countNo>
<title>Choke</title>
</newBook>
</newBooks>
要修改的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<newBooks>
<xsl:for-each select="books/book">
<newBook>
<countNo>???</countNo>
<title>
<xsl:value-of select="title"/>
</title>
</newBook>
</xsl:for-each>
</newBooks>
</xsl:template>
</xsl:stylesheet>
所以问题是用什么来代替?是否有任何标准的关键字,或者我只是必须声明一个变量并在循环中递增它?
由于问题很长,我可能会期待一行或一个单词的答案:)
发布于 2008-09-18 15:25:19
position()
。例如:
<countNo><xsl:value-of select="position()" /></countNo>
发布于 2008-09-18 15:26:28
尝试在?位置插入<xsl:number format="1. "/><xsl:value-of select="."/><xsl:text>
。
注意"1“。-这是数字格式。更多信息:here
发布于 2010-11-20 09:05:47
您还可以在Postion()上运行条件语句,这在许多情况下都非常有用。
例如。
<xsl:if test="(position( )) = 1">
//Show header only once
</xsl:if>
https://stackoverflow.com/questions/93511
复制相似问题