Xpath 计算1'的数量;在包含两组1';以0';s
我有两组1,中间有一些0。在第一组1之前是任意数量的0,在第二组1之后是任意数量的0。下面是一个示例实例。我需要一个XPath 2.0表达式,它返回第一个集合中1的数目。我需要一个XPath 2.0表达式,它返回第二组1中的1个数。对于下面的示例实例,第一个XPath表达式应返回2,第二个XPath表达式应返回3Xpath 计算1'的数量;在包含两组1';以0';s,xpath,Xpath,我有两组1,中间有一些0。在第一组1之前是任意数量的0,在第二组1之后是任意数量的0。下面是一个示例实例。我需要一个XPath 2.0表达式,它返回第一个集合中1的数目。我需要一个XPath 2.0表达式,它返回第二组1中的1个数。对于下面的示例实例,第一个XPath表达式应返回2,第二个XPath表达式应返回3 <Cells> <cell> <value>0</value> </cell> &l
<Cells>
<cell>
<value>0</value>
</cell>
<cell>
<value>1</value>
</cell>
<cell>
<value>1</value>
</cell>
<cell>
<value>0</value>
</cell>
<cell>
<value>1</value>
</cell>
<cell>
<value>1</value>
</cell>
<cell>
<value>1</value>
</cell>
<cell>
<value>0</value>
</cell>
</Cells>
0
1.
1.
0
1.
1.
1.
0
这看起来有点复杂,但我认为它可能会奏效。这里的关键是:
对于第一个表达式,请尝试:
count(((//cell[value=1][following-sibling::cell[1][value=0] ][1]/(self::cell,preceding-sibling::cell[value=1])))
intersect
(//cell[value=1][preceding-sibling::cell[1][value=0] ][1]/(self::cell,following-sibling::cell[value=1])))
并输出2
第二个表达式只查找第二个组(注意,[1]
更改为[2]
):
它输出我们3
基本上,每个表达式都会查找具有值为1
的单元格组,这些单元格组要么跟随具有值为0
的单元格,要么跟随一个这样的单元格,然后查找这些单元格的交点-即跟随和跟随0
值单元格的单元格。有两组这样的单元格,count()
方法为每组单元格计数。最后,通过在适当的位置使用位置谓词[1]
或[2]
来选择目标组
count(((//cell[value=1][following-sibling::cell[1][value=0] ][2]/(self::cell,preceding-sibling::cell[value=1])))
intersect
(//cell[value=1][preceding-sibling::cell[1][value=0] ][2]/(self::cell,following-sibling::cell[value=1])))