我熟悉在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中执行此操作呢?
答案 0 :(得分:2)
<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding-sibling::book | $matchedBook/preceding::book)"/>
应该这样做。
实际上只需要<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding::book)"/>
。