2

我熟悉在 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 中执行此操作呢?

4

1 回答 1

2

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

其实做就够了<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding::book)"/>

于 2012-06-14T17:12:11.143 回答