使用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>
预期产出:
如何找出单元格内非ref标签的数量?
para中可能有多个标签。名字可能是任何东西。但我们只需要检查ref。
答案 0 :(得分:1)
XPath无法返回每个para
元素的结果 - 这是你应该在更高级语言XPath中嵌入的东西(例如,XSLT,XQuery,Java,PHP,Python,Perl)。 ..)。
为
之类的输入检索单个结果<cell><para> <ref> </ref> <ref> </ref> </para> </cell>
使用以下XPath表达式
count(//para/*[not(self::ref)])
,在这种情况下,将产生
0
编辑:这只适用于XPath 1.0,正如Sean B. Durkin指出的那样。在Xpath 2.0和3.0中,XPath函数可以是轴步,并且始终完全评估序列。有关XPath 2.0解决方案,请参阅Sean's answer。
答案 1 :(得分:1)
如果您使用的是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)