我有一个旧的 wddx 文件(并且可能必须经常这样做),我想为此编写一些 XSL,这将使我计算出具有具有特定属性的子节点的“顶级”节点的数量turn 有一个子节点,其文本值以某个子字符串开头。例如,这种语法让我获得了 82 个节点的计数(从技术上讲不是父节点,但每个父节点只有一个名称属性为“任务”的“var”节点)......
//wddxPacket/data/array/struct/var/struct/var[@name='task']/string/starts-with(text(),"ST_")
...但是,我正在寻找的实际节点数是所有返回 true 到上述条件的节点......所以上面该语法的 count() 结果为 82......它应该是 6,因为只有其中六个结果是正确的。
我认为这与节点集有关,并创建一个仅围绕我正在寻找的条件的节点集。我不认为自己完全是 XSL 的菜鸟……呵呵……但你们中的一些人可能会。无论如何..我一直在寻找,我只是不确定我正在寻找正确的东西并且可以使用一些指导。
这是XML(wddx)的摘录......
<wddxPacket version="1.0">
<header/>
<data>
<array length="1">
<struct type="mydata">
<var name="serverscheduletask#$%^DEFAULT#$%^SA-QW_71">
<struct type="schedule-data">
<var name="task">
<string>SA-QW_71</string>
</var>
</struct>
</var>
<var name="serverscheduletask#$%^DEFAULT#$%^ST_FRED">
<struct type="schedule-data">
<var name="task">
<string>ST_FRED</string>
</var>
</struct>
</var>
<var name="serverscheduletask#$%^DEFAULT#$%^SA-QW_16">
<struct type="schedule-data">
<var name="task">
<string>SA-QW_16</string>
</var>
</struct>
</var>
<var name="serverscheduletask#$%^DEFAULT#$%^ST_TEST">
<struct type="schedule-data">
<var name="task">
<string>ST_TEST</string>
</var>
</struct>
</var>
<var name="serverscheduletask#$%^DEFAULT#$%^SA-QW_71">
<struct type="coldfusion.scheduling.ScheduleTagData">
<var name="task">
<string>SA-QW_71</string>
</var>
</struct>
</var>
</struct>
</array>
</data>
</wddxPacket>