获取给定xpath表达式的循环编号为'id'或'counter'的Xpath

时间:2011-07-06 21:50:27

标签: xpath

根据反馈更新,谢谢 -

我有一个例如下面的例子,在解析xpath时,我想通过数字或标识符跟踪我在/行/行中的哪一行。我目前正在尝试将XML转换为关系格式,并将每组列标识为“行ID”,行号或行位置。

<rows>
<row>
<columns>
<column>
<name>x</name>
<value>val1.x</value>
</column>
<column>
<name>y</name>
<value>val1.y</value>
</column>
<column>
<name>z</name>
<value>val1.z</value>
</column>
</columns>
</row>
<row>
<columns>
<column>
<name>x</name>
<value>val2.x</value>
</column>
<column>
<name>y</name>
<value>val2.y</value>
</column>
<column>
<name>z</name>
<value>val2.z</value>
</column>
</columns>
</row>
<row>
<column>
<name>x</name>
<value>val3.x</value>
</column>
<column>
<name>y</name>
<value>val3.y</value>
</column>
<column>
<name>z</name>
<value>val3.z</value>
</column>
</columns>
</row>
</rows>

1 个答案:

答案 0 :(得分:1)

假设您的上下文节点是<value><name><column><columns>元素,而<row>元素不在当前结构之外的本文档中。然后,以下XPath将为您提供“行号”

count(ancestor::row) + count(ancestor::row[1]/preceding-sibling::row)

索引从1开始。如果表达式返回0,则上下文节点不在行结构中。