我有如下要求。 示例XML:
<root>
<bookseries>
<author/>
<version/>
<book>
<date>1</date>
<price>10</price>
</book>
<book>
<date>2</date>
<price>20</price>
</book>
<book>
<date>3</date>
<price>30</price>
</book>
</bookseries>
</root>
现在我想将模板应用于所有 book 元素。 我目前在模板中做的是:
<xsl:template match="//book">
<!--here I want to see which book element is being copied and also format its data.
I am not getting the current order number of template-->
</xsl:template>
目前使用这种方法,我只获得了第一本书元素数据的3次。我需要在相应的模板调用中访问每个书元素数据。我怎么能这样做?
答案 0 :(得分:-1)
你可以试试这个:
<xsl:template match="//book">
<xsl:copy>
<!-- capturing child with different element name to show only result-->
<d><xsl:value-of select="date"/></d>
<p><xsl:value-of select="price"/></p>
</xsl:copy>
</xsl:template>
当您匹配模板而不是模板内部时,您将捕获名称不是机智的孩子&#34; //
&#34;,在这种情况下,它运行在整个文件评估器上,而不是当前元素,因为@martin已经在上面的评论中提到。