XSLT2.0とXPathを学んでいます。例を作成しているときに、XPathで使用可能な前の軸に出くわし、以下の例を作成しました。
入力として使用される以下のorder.xmlファイルを見つけてください。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Order id="12345">
<Item>
<ItemId>007</ItemId>
<ItemName>iPhone 5</ItemName>
<Price>500</Price>
<Quantity>1</Quantity>
</Item>
<Item>
<ItemId>456</ItemId>
<ItemName>Ipad</ItemName>
<Price>600</Price>
<Quantity>2</Quantity>
</Item>
<Item>
<ItemId>7864567</ItemId>
<ItemName>Personal Development Book</ItemName>
<Price>10</Price>
<Quantity>10</Quantity>
</Item>
<Item>
<ItemId>123</ItemId>
<ItemName>Java Book</ItemName>
<Price>20</Price>
<Quantity>12</Quantity>
</Item>
</Order>
上記のXMLの変換に使用される以下のXSLTtestaxis.xslファイルを見つけてください。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="count(/Order/Item[ItemName='Ipad']/ItemName/preceding::*)" />
</xsl:template>
変換後の出力は 6です
私が間違っていなければ、ここでコンテキストノードは1より下にあります。
<ItemName>Ipad</ItemName>
コンテキストノードの前にあるすべてのノードをカウントすると、カウントは5になります。ここで質問になりますが、なぜ出力にノードの数が6として表示されているのですか?
何か誤解があったら教えてください
前もって感謝します。