我正在尝试根据1.0版起草一个xquery,它计算了无界结构下元素中值的出现次数。
例如..我收到以下请求作为我的系统的输入,我想计算多少时间,我在OutcomeCode元素中得到FC字,DataDetail和PerEquipment都是无界结构。
在其中寻找您宝贵的建议。根据要求,答案应为3,因为我们在第一个DataDetail事件中获得了2个FC,在最后一个中获得了1个FC。
<v4:DataDetails xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v4="http://services.xx.net/PP/v4">
<v4:DataDetail>
<v4:PerEquipment>
<v4:OutcomeCode>FC</v4:OutcomeCode>
<v4:OutcomeDescription>FC Data</v4:OutcomeDescription>
</v4:PerEquipment>
<v4:PerEquipment>
<v4:OutcomeCode>FC</v4:OutcomeCode>
<v4:OutcomeDescription>FC Data</v4:OutcomeDescription>
</v4:PerEquipment>
</v4:DataDetail>
<v4:DataDetail>
<v4:PerEquipment>
<v4:OutcomeCode>OG</v4:OutcomeCode>
<v4:OutcomeDescription>OG Data</v4:OutcomeDescription>
</v4:PerEquipment>
<v4:PerEquipment>
<v4:OutcomeCode>FC</v4:OutcomeCode>
<v4:OutcomeDescription>FC Data</v4:OutcomeDescription>
</v4:PerEquipment>
</v4:DataDetail>
</v4:DataDetailsResponse>
答案 0 :(得分:1)
如果您只想评估出现次数,则以下查询应该足够:
count(//*:OutcomeCode[. = 'FC'])
请注意,任何“FC”子字符串都会对结果产生影响。如果你想计算单词,你可以使用XQuery Full Text的'contains text'关键字(前提是你的XQuery处理器提供支持):
count(//*:OutcomeCode[. contains text 'FC'])