2

私は、現在のコンテキストで先行する要素の数を決定するためにXSLTで先行する軸を使用することに精通しています。ただし、変数に格納したノードを指定すると、同じことを行う方法がわかりません。例えば:

<xsl:variable name="matchedBook" select="book[text()='The Hobbit']"/>
<xsl:variable name="precedingBookCount" select="count(???)"/>

次のXMLを考えると、precedingBookCount3に等しいはずです。

<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演算子 <<があることがわかりますが、これはXPath1.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 に答える