XPath 또는 XSLT에서 도움이 필요합니다.현재 노드에서 논리 상위 노드 ID 가져 오기
나는 둘 다 새로운 해요,하지만 지금은 내가 해결하기 위해 :)
을 나는이 처음에 간단하지만 많은 시도 후, 하드처럼 소리 사건을 해결해야 다음 (은으로 단순화) XML.
첫째, "깨끗한"하나
<root>
<a>
<a1>
<a11>
<x1>111</x1>
<x2>222</x2>
<x3>333</x3>
</a11>
</a1>
</a>
<b>
<b1>
<b11>
<b111>
<x2>777</x2>
<x3>888</x3>
</b111>
</b11>
</b1>
</b>
</root>
그리고 두 번째, 같은 XML하지만 "논리적"ID 번호 추가로. 이 ID는 나중에 결과를 교차 검사하는 데 유용하며 물리적으로 XML에 존재하지 않습니다.
<root>
1 <a>
1 <a1>
1 <a11>
1 <x1>111</x1>
2 <x2>222</x2>
3 <x3>333</x3>
</a11>
</a1>
</a>
2 <b>
1 <b1>
1 <b11>
1 <b111>
1 <x2>777</x2>
2 <x3>888</x3>
</b111>
</b11>
</b1>
</b>
</root>
내 목표는 가 현재 노드의 논리 ID 번호를 검색하려면이며, 모든 현재의 노드부터 순서대로합니다 ('루트'노드를 제외한) 등 부모, 조부모 ...입니다 . 내 현재 노드 위치가 root/a/a1/a11/x2
에있는 경우
는 예를 들어,이 같은 출력 비슷한을 생성하려면 :
출력 : (순서대로 왼쪽 2.1.1.1
에서 오른쪽으로) :
'2' = 'x2' node
'1' = 'a11' node
'1' = 'a1' node
'1' = 'a' node
지금, 내가 아는 모든 현재 노드 ID 번호를 받고 있으며이 XPath를 사용하여, 단지보다 한 단계 위에있는 부모의 :
count(./preceding-sibling::*) + 1
count(../preceding-sibling::*) + 1
그러나 나는 아직도 부모의 ID 번호가 나머지 (있는 경우)를 얻는 방법을 알 수 없습니다. XML의 노드 깊이 수준은 다양하고 대부분의 시간은 2 단계 이상이므로 그 가능성도 설명해야합니다.
제 질문에 대한 답변을 드리겠습니다.
누구나 해결책이 있으십니까? 너무 초보자를위한 도움이 될 것입니다 만약 당신이 너무 귀하의 솔루션에 대한 몇 가지 설명을 줄 수 있습니다 :)
고맙습니다.
답변 해 주셔서 감사합니다. 이제 실제 데이터로 솔루션을 시험해 보겠습니다.나는 결과와 함께 곧 돌아올 것이다. –
당신의 솔루션이 나를 위해 일했습니다. 내 실제 XML 데이터에 대해 테스트 한 후 코드를 수정하여 필요에 맞게 조정합니다. 고맙습니다. 아주 고맙습니다. 케이스가 닫힙니다. –