XSLT访问模板的循环编号

时间:2017-11-30 10:17:25

标签: xml xslt xpath xslt-1.0

我有如下要求。 示例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次。我需要在相应的模板调用中访问每个书元素数据。我怎么能这样做?

1 个答案:

答案 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已经在上面的评论中提到。