[xml] XPath : 텍스트 노드 선택

다음과 같은 XML이 있습니다.

<node>Text1<subnode/>text2</node>

XPath를 통해 첫 번째 또는 두 번째 텍스트 노드를 어떻게 선택합니까?

이 같은:

/node/text()[2]

물론 노드 안의 모든 텍스트의 병합 결과이기 때문에 작동하지 않습니다.



답변

다음과 같은 XML이 있습니다.

<node>Text1<subnode/>text2</node> 

XPath를 통해 첫 번째 또는 두 번째 텍스트 노드를 어떻게 선택합니까?

사용 :

/node/text()

XML 문서의 최상위 요소 ( “노드”)의 모든 텍스트 노드 자식을 선택합니다.

/node/text()[1]

XML 문서의 최상위 요소 (이름이 “노드”)의 첫 번째 텍스트 노드 자식을 선택합니다.

/node/text()[2]

XML 문서의 최상위 요소 ( “노드”)의 두 번째 텍스트 노드 자식을 선택합니다.

/node/text()[someInteger]

XML 문서의 최상위 요소 (이름이 “노드”)의 일부 정수 텍스트 노드 자식을 선택합니다. 다음 XPath 표현식과 동일합니다.

/node/text()[position() = someInteger]


답변

xpath가 작동해야합니다. MarkLogic과 Zorba Xquery / Xpath 구현 모두에서 xpath와 광산을 테스트했습니다.

둘 다 작동합니다.

/node/child::text()[1] - should return Text1
/node/child::text()[2] - should return text2


/node/text()[1] - should return Text1
/node/text()[2] - should return text2


답변