XPath 1.0中:指定节点之前查找节点的计数(XPath 1.0: Finding count

2019-09-18 02:53发布

我熟悉使用前述轴线在XSLT查找确定前述给定的当前上下文的元素数。 不过,我没有看到一个办法做到因为我已经存储在变量中的一个节点相同。 例如:

<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运营商 <<我可以使用,但是这似乎并没有出现在XPath 1.0中。

我怎么能去XPath 1.0中则这样做呢?

Answer 1:

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

其实这足以做<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding::book)"/>



文章来源: XPath 1.0: Finding count of nodes before a specified node