我正在尝试查找父元素的位置或计数;当我们可以在包含文本的帮助下识别它的子元素时;下面是 xml:
<start>
<Item>
<ItemName>x</ItemName>
<ItemValue>x val</ItemValue>
</Item>
<Item>
<ItemName>y</ItemName>
<ItemValue>y val</ItemValue>
</Item>
<Item>
<ItemName>z</ItemName>
<ItemValue>z val</ItemValue>
</Item>
<Item>
<ItemName>y</ItemName>
<ItemValue>y val</ItemValue>
</Item>
<Item>
<ItemName>Head</ItemName>
<ItemValue>Head val</ItemValue>
</Item>
<Item>
<ItemName>Head1</ItemName>
<ItemValue>Head1 Val</ItemValue>
</Item>
<Item>
<ItemName>Head2</ItemName>
<ItemValue>Head2 Val</ItemValue>
</Item>
</start>
现在一旦我找到 /start/Item[ItemName='Head'] 这个,我想知道它的位置是什么,或者在这个 ItemName='Head' 之前有多少 '/start/Item' 这样我可以使用该计数/值/位置并进一步获取 Heads Head1、Head2 等...; ItemName Head 将是静态的,但 Head1、Head2 将是动态的。
我检查了使用下面我能够遍历到 ItemName Head
<xsl:if test="/start/Item[ItemName='Head'] "/>
那我怎样才能达到目标呢?
更新
我试过下面的代码:
只是想在正文中打印计数,但没有用
<fo:block>
<xsl:template match="start/Item[ItemName='Head']">
Count <xsl:value-of select="count(preceding-sibling::Item)"/>
</xsl:template>
</fo:block>
我在这里遗漏了什么吗? 我对此很陌生,所以如果我在这里犯了非常基本的错误,我深表歉意
在例如
<xsl:template match="start/Item[ItemName = 'Head']">
您可以选择例如count(preceding-sibling::Item)
找出当前匹配的 Item
之前有多少个 Item
元素作为兄弟姐妹。