Xslt 仅通过约束返回节点

Xslt 仅通过约束返回节点,xslt,node-set,Xslt,Node Set,我有一个遗留wddx文件(可能必须经常这样做),我想为其编写一些XSL,这将为我计算“顶级”节点的数量,这些节点有一个具有特定属性的子节点,而子节点又有一个以特定子字符串开头的文本值的子节点。例如,这个语法为我提供了82个节点的计数(从技术上讲不是父节点,但每个父节点只有一个“var”节点,其name属性为“task”) 。。。然而,我正在寻找的节点的实际#是返回到上述条件的所有节点…因此上述语法的count()结果是82…它应该是6,因为这些结果中只有6个是真的 我认为这与节点集和创建一个只围

我有一个遗留wddx文件(可能必须经常这样做),我想为其编写一些XSL,这将为我计算“顶级”节点的数量,这些节点有一个具有特定属性的子节点,而子节点又有一个以特定子字符串开头的文本值的子节点。例如,这个语法为我提供了82个节点的计数(从技术上讲不是父节点,但每个父节点只有一个“var”节点,其name属性为“task”)

。。。然而,我正在寻找的节点的实际#是返回到上述条件的所有节点…因此上述语法的count()结果是82…它应该是6,因为这些结果中只有6个是真的

我认为这与节点集和创建一个只围绕我正在寻找的条件旋转的节点集有关。我不认为自己是XSL的一个完整的NOOB……呵呵…但是你们中的一些人可能会。不管怎样,我一直在四处寻找,我只是不确定我在寻找正确的东西,是否需要一些指导

下面是XML(wddx)的练习


SA-QW_71
圣弗雷德
SA-QW_16
ST_试验
SA-QW_71

您拥有的xpath表达式实际上仅在xpath 2.0中有效。
函数以
开头,返回一个布尔值,因此表达式返回一个布尔值序列

false true false true false
如果使用count函数,它只会对序列中的所有布尔值进行计数,不管它们是真是假

你可能想要的表达方式是

//wddxPacket/data/array/struct/var/struct/var[@name='task']/string[starts-with(text(),'ST_')]
或者在计数中(对于示例XML返回1)


啊哈!谢谢你…我现在明白我做错了什么…非常感谢。
false true false true false
//wddxPacket/data/array/struct/var/struct/var[@name='task']/string[starts-with(text(),'ST_')]
count(//wddxPacket/data/array/struct/var/struct/var[@name='task']/string[starts-with(text(),'ST_')])