根据反馈更新,谢谢 -
我有一个例如下面的例子,在解析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>
答案 0 :(得分:1)
假设您的上下文节点是<value>
,<name>
,<column>
或<columns>
元素,而<row>
元素不在当前结构之外的本文档中。然后,以下XPath将为您提供“行号”
count(ancestor::row) + count(ancestor::row[1]/preceding-sibling::row)
索引从1
开始。如果表达式返回0
,则上下文节点不在行结构中。