2017-03-29 1 views
2

난 내 변화 페이로드 (payload)이xpath 또는 xquery를 사용하여 부모 노드의 형제 요소를 기반으로 요소의 값을 추출하는 방법?

<transformedPayload> 
<typeA>valueOfA</typeA> 
<typeB><valueOfB</typeB> 
</transformedPayload> 

처럼 보이도록 더 이상 진행하기 위해 XPath는 또는 XQuery를 사용하여 요소 'TYPEA'의 값을 추출 할이 같은

<Payload> 
    <Identifier> 
    <Type>typeA</Type> 
    <Value>valueOfA</Value> 
    </Identifier> 
    <Identifier> 
    <Type>typeB</Type> 
    <Value>valueOfB</Value> 
    </Identifier> 
</Payload> 

페이로드를 가지고 도와주세요. 미리 감사드립니다.

답변

2

이것은 XQuery에서 매우 쉽게 수행 할 수 있습니다. 모든 Identifier들 중 일부만을 선택합니다

<transformedPayload>{ 
    for $ident in /Payload/Identifier 
    return element { $ident/Type } { $ident/Value/text() } 
}</transformedPayload> 

, 당신은 where 절을 사용할 수 있습니다 : 다음 쿼리는 당신이 원하는 것을

<transformedPayload>{ 
    for $ident in /Payload/Identifier 
    where $ident/Type eq 'typeA' 
    or $ident/Type eq 'typeB' 
    return element { $ident/Type } { $ident/Value/text() } 
}</transformedPayload> 

당신은 또한 = 연산자를 사용할 수 있으며, 그 existantial 의미이 더 컴팩트하게 :

<transformedPayload>{ 
    for $ident in /Payload/Identifier 
    where $ident/Type = ('typeA', 'typeB') 
    return element { $ident/Type } { $ident/Value/text() } 
}</transformedPayload> 
+0

감사합니다, 그것은했다. 그러나 나는 의심이 하나 더있다. 의는 N 거기 TYPEA 같은 요소 수 valueOfA b를 입력 valueOfB typeC 가 있다고 가정 해 봅시다valueOfC 그러나 typeA와 typeB 만 추출해야합니다. 어떻게해야합니까? –

+0

위의 의견을 살펴 주시겠습니까? –

+0

예제를 추가했습니다. –