我熟悉在 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 中执行此操作呢?
<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding-sibling::book | $matchedBook/preceding::book)"/>
应该这样做。
实际上,<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding::book)"/>
就足够了.