에서 네임 스페이스 내가 가지고있는 XML 파일을 다음은 :MSXML의 selectnodes : 텍스트 노드
<root xmlns="http://someurl/element" xmlns:text="http://someurl/text">
<elements>
<element>
<Id>text:SOME_ID</Id>
<!-- some other elements -->
</element>
<element>
<!-- some other elements -->
<reference>
<link ref="text:SOME_ID" />
</refernce>
</element>
</elements>
</root>
나는 reference
노드에서 요소 Id=text:SOME_ID
이있는 elment
노드의 모든 자식 요소를 선택합니다. 나는 C++에서의 방법을 사용하여이 작업을 수행하려고합니다.이 방법은 msxml 파서의 IXMLDOMNode
개체를 사용합니다. 내가 pChild
에서 선택한 refence 노드와 SelectionNamespaces
propetey 세트가 다음 exmaple에서
xmlns:n="http://someurl/element"
에 :
MSXML2::IXMLDOMNodePtr pSelectedNodes =
pChild->selectNodes("../../n:element[n:Id=n:link/@ref]/n:*");
__ASSERT(pSelectedNodes->length > 0)
이 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
@ user141478 : 문제는 내부 컨텍스트 필터 내부에서 외부 컨텍스트를 사용해야한다는 것입니다. 그것은 XPath 1.0에서는 가능하지 않습니다. XPath 2.0에서는 다음을 할 수 있습니다 :'for $ current in. return/*/*/n : 요소 [n : Id eq $ current/@ ref]' –