다음과 같은 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