1

次の 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 のクエリに従業員がいない場合に特別なことを行うことです。

4

2 に答える 2

1

を使用して、特定の値に一致するノードcount()の出現回数を見つけることができます (この例ではと) 。DEPT77775555

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')
于 2013-07-24T18:04:27.773 に答える
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 ...
于 2013-07-24T18:07:40.353 に答える