用于检索父级内所有标签的 Xpath
Xpath for retrieving all the tags inside parent
使用 xpath 在父标签内查找特定标签:
示例输入:
<Table>
<Tbody>
<Row>
<cell><para> <ref> </ref> <ref> </ref> </para> </cell>
</Row>
<Row>
<cell><para> <a1> </a1><ref> </ref> </para> </cell>
</Row>
<Row>
<cell><para> <ref> </ref></para> </cell>
</Row>
<Row>
<cell><para> <b1> </b1></para> </cell>
</Row>
<Row>
<cell><para> <b1> </b1> <c1> </c1></para> </cell>
</Row>
<Row>
<cell><para> <ref> </ref> <c1> </c1></para> </cell>
</Row>
<Thead>
预期输出:
- cell1-para 它应该 return 0
- cell2-para 应该 return 1
- cell3-para 它应该 return 0
- cell4-para 应该 return 1
- cell5-para 应该 return 2
- cell6-para 它应该 return 1
如何找出单元格内非引用标签的数量?
段落中可能有多个标签。名字可以是任何东西。但是我们只需要单独检查 ref。
XPath 无法为每个 para
元素返回结果 - 这是您应该在嵌入了 XPath 的高级语言(例如,XSLT、XQuery、Java、 PHP、Python、Perl...)。
要检索单个结果,对于像
这样的输入
<cell><para> <ref> </ref> <ref> </ref> </para> </cell>
使用以下 XPath 表达式
count(//para/*[not(self::ref)])
在这种情况下,将产生
0
编辑:正如 Sean B. Durkin 指出的那样,这仅适用于 XPath 1.0。这在 Xpath 2.0 和 3.0 中是可能的,其中 XPath 函数可以是轴步骤并且序列总是被完全计算。有关 XPath 2.0 解决方案,请参阅 。
如果您使用的是 XPath 2.0 或 3.0,并且焦点节点是 Table 的父节点,则以下表达式...
Table/Tbody/Row/cell/para/count(decendant::ref)
...当应用于给定的示例输入文档时,将评估此序列 xs:integer...
(0,1,0,1,2,1)
只是为了好玩,这里有一个等效的替代表达式...
for $p in Table/Tbody/Row/cell return count($p//ref)
使用 xpath 在父标签内查找特定标签:
示例输入:
<Table>
<Tbody>
<Row>
<cell><para> <ref> </ref> <ref> </ref> </para> </cell>
</Row>
<Row>
<cell><para> <a1> </a1><ref> </ref> </para> </cell>
</Row>
<Row>
<cell><para> <ref> </ref></para> </cell>
</Row>
<Row>
<cell><para> <b1> </b1></para> </cell>
</Row>
<Row>
<cell><para> <b1> </b1> <c1> </c1></para> </cell>
</Row>
<Row>
<cell><para> <ref> </ref> <c1> </c1></para> </cell>
</Row>
<Thead>
预期输出:
- cell1-para 它应该 return 0
- cell2-para 应该 return 1
- cell3-para 它应该 return 0
- cell4-para 应该 return 1
- cell5-para 应该 return 2
- cell6-para 它应该 return 1
如何找出单元格内非引用标签的数量?
段落中可能有多个标签。名字可以是任何东西。但是我们只需要单独检查 ref。
XPath 无法为每个 para
元素返回结果 - 这是您应该在嵌入了 XPath 的高级语言(例如,XSLT、XQuery、Java、 PHP、Python、Perl...)。
要检索单个结果,对于像
这样的输入<cell><para> <ref> </ref> <ref> </ref> </para> </cell>
使用以下 XPath 表达式
count(//para/*[not(self::ref)])
在这种情况下,将产生
0
编辑:正如 Sean B. Durkin 指出的那样,这仅适用于 XPath 1.0。这在 Xpath 2.0 和 3.0 中是可能的,其中 XPath 函数可以是轴步骤并且序列总是被完全计算。有关 XPath 2.0 解决方案,请参阅
如果您使用的是 XPath 2.0 或 3.0,并且焦点节点是 Table 的父节点,则以下表达式...
Table/Tbody/Row/cell/para/count(decendant::ref)
...当应用于给定的示例输入文档时,将评估此序列 xs:integer...
(0,1,0,1,2,1)
只是为了好玩,这里有一个等效的替代表达式...
for $p in Table/Tbody/Row/cell return count($p//ref)