2013-07-24 2 views
1

나는 다음과 같은 XML이 :특정 값이 특정 노드의 선두로부터에 포함되지 않은 경우 XPATH를 사용하여 찾을 수

<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의 쿼리에 직원이 없으면 특별한 작업을하는 것입니다.

답변

2

을 반응 조건을 사용할 수있다 (이 예 77775555에서) 특정 값과 일치 = 두 시퀀스에 공통 요소가 있는지 확인합니다. DEPT 5555 또는 DEPT 7777에 아무도없는 경우 즉, 확인 (=이 DEPT 5555 아무도과 7777 DEPT에 아무도 없음) : 당신이 있는지 확인하려는 경우,

if (not(//DEPT = ("5555", "7777"))) then ... 

가 아니면이 가능한 빨리

if (not(//DEPT[. = "5555"]) or not(//DEPT[. = "7777"])) then ... 

또는 동등하고 : DEPT 5555에는 하나 DEPT 7777에서 아무도 없습니다

if (count(distinct-values(//DEPT[. = ("5555", "7777")])) < 2) then ... 
+0

이 매우 도움이되었다가,은 "하지"기능은 최고의했다. 감사! – BarrettNashville

2

count()을 사용하면의 발생 횟수를 찾을 수 있습니다 할 522,노드는 예

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') 
관련 문제