我有以下XML:
<query>
<row>
<EMPLID>001001</EMPLID>
<NAME>Smith,Jim</NAME>
<DEPT>2929</DEPT>
<DED_CUR>37.50</DED_CUR>
</row>
<row>
<EMPLID>001004</EMPLID>
<NAME>Green, Bill</NAME>
<DEPT>3498</DEPT>
<DED_CUR>37.50</DED_CUR>
</row>
</query>
有没有办法使用XPATH来说出类似
的内容If no DEPT node contains 5555 or 7777, then do the following....
如果DEPT 5555或7777中的查询中没有员工,那么目的就是做一些特别的事情。
答案 0 :(得分:2)
您可以使用count()
查找匹配特定值的DEPT
个节点的出现次数(在此示例中为7777
和5555
)
count(//DEPT[text() != '7777' and text() != '5555'])
与您的示例中一样,您也可以使用条件在XPath中对此结果做出反应
if (count(//DEPT[text() != '7777' and text() != '5555']) > 0) then ('Found at least one') else ('Found none')
答案 1 :(得分:2)
您可以使用=来检查两个序列中是否存在共同元素。即检查DEPT 5555或DEPT 7777中是否有人(= DEPT 5555中没有人,DEPT 7777中没有人):
if (not(//DEPT = ("5555", "7777"))) then ...
或者,如果您想检查,如果DEPT 5555中没有人或DEPT 7777中没有人:
if (not(//DEPT[. = "5555"]) or not(//DEPT[. = "7777"])) then ...
或等效,可能更快:
if (count(distinct-values(//DEPT[. = ("5555", "7777")])) < 2) then ...