XPath 1.0:查找指定节点之前的节点数

时间:2012-06-14 17:04:09

标签: xslt xpath xslt-1.0 xpath-1.0

我熟悉在XSLT中使用preceding axes来查找给定当前上下文的先前元素的数量。但是,鉴于我存储在变量中的节点,我没有看到相同的方法。例如:

<xsl:variable name="matchedBook" select="book[text()='The Hobbit']"/>
<xsl:variable name="precedingBookCount" select="count(???)"/>

鉴于以下XML,precedingBookCount应该等于3。

<available>
    <book>Lord of the Rings</book>
    <book>The Hunger Games</book>
</available>
<purchased>
    <book>Ready Player One</book>
    <book>The Hobbit</book>
    <book>Lord of the Flies</book>
</purchased>

我在XPath 2.0中看到我可以使用NodeComp operator <<,但这似乎不存在于XPath 1.0中。

我怎样才能在XPath 1.0中执行此操作呢?

1 个答案:

答案 0 :(得分:2)

<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding-sibling::book | $matchedBook/preceding::book)"/>应该这样做。

实际上只需要<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding::book)"/>