편집 : 답변을 찾은 것 같지만 누군가가 수정/개선 사항이 있는지 확인하기 위해 공개적으로 남겨 둘 것입니다.xpath - 현재 노드에서 하위 노드의 값과 부모 노드의 값이 일치합니다.
나는 Talend의 etl 도구에서 xpath를 사용하고 있습니다. 나는이 같은 XML을 가지고
<root>
<employee>
<benefits>
<benefit>
<benefitname>CDE</benefitname>
<benefit_start>2/3/2004</benefit_start>
</benefit>
<benefit>
<benefitname>ABC</benefitname>
<benefit_start>1/1/2001</benefit_start>
</benefit>
</benefits>
<dependent>
<benefits>
<benefit>
<benefitname>ABC</benefitname>
</benefit>
</dependent>
부양 가족에 대한 혜택을 구문 분석, 나는 직원의 이익 요소에 존재하는 요소를 싶어. 위의 예에서 부양 가족의 시작 날짜에 대해 1/1/2001을 얻고 싶습니다. 부양 가족의 급여가 ABC 혜택을 갖기 때문에 2004 년 2 월 3 일이 아니라 1/1/2001이 필요합니다.
/root/employee/dependent/benefits/benefit에 상대적인 xpath는 종속 유익한 이름과 동일한 혜택 이름을 가진 상위 직원 혜택에 대해 benefit_start 값을 산출합니까? (참고로 나는 리터럴 값이 무엇인지 미리 알지 못합니다. 단지 'ABC'를 찾을 수없고, 종속물의 benefitname 요소에있는 값이 무엇이든지 일치해야합니다.
나는 노력하고 있습니다 :
내가 의 중간에 현재 노드의 조상을 참조하는 방법을 모르는
을 ../../../benefits/benefit[benefitname=??what??]/benefit_start xpath (내가 생각하기에 "."라고 생각하기 때문에 직원/혜택의 혜택 노드가됩니다.)
EDIT : 나는 생각합니다. 내가 원하는 것은 "current()/benefitname"입니다. 입니다. 색슨과 함께 일하는 것 같아요, 아직 etl 도구에서 시도하지 않았습니다.
(+1) 좋은 해결책. 그냥 의심 스럽다 :이'current()'는 표준 XPath 함수인가? (또는 XLST 또는 XQuery 또는 기타입니까?) – acdcjunior
@acdcjunior'current()'는 XSLT의 일부입니다. XPath 스펙에는 없는데, 매우 유용하기 때문에 수치 스럽습니다. – JLRishe
그래, 실제로. 설명 주셔서 감사합니다! – acdcjunior