XPath 1.0: поиск количества узлов перед указанным узлом
Я знаком с использованием предыдущих осей в 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 тогда?
1 ответ
Решение
<xsl:variable name="precedingBookCount" select="count($matchedBook/preceding-sibling::book | $matchedBook/preceding::book)"/>
следует сделать.
На самом деле достаточно сделать <xsl:variable name="precedingBookCount" select="count($matchedBook/preceding::book)"/>
,