검색 할 노드의 이름을 지정하는 문자열 배열을 기반으로 문서를 다시 작성할 수있는 XQuery 함수가 필요합니다. 특히 자식 노드의 하위 집합을 반환 할 수 있어야합니다. 아래의 정의를 만족해야하고 임의의 문서를 사용해야합니다.XQuery의 문자열을 기반으로 MarkLogic XML 문서를 동적으로 다시 작성하십시오.
local:apply-node-includes($document, $includedNodeNames as xs:string*)
것은 내가 그런 다음 함수는 이름 만 자식 노드가 includedNodes이 반환 $을에서 지정하도록 문서를 변환해야합니다 일부 XML 문서를
let $doc :=
<foo a="b">
<bar>hello</bar>
<baz>1</baz>
<bang>
<text>world</text>
</bang>
</foo>')
했다 감안할 때.
예 local:apply-node-includes($doc, 'baz')
는
<foo a="b">
<bar>hello</bar>
<bang>
<text>world</text>
</bang>
</foo>
내가 노드 반복 실험을 반환
<foo a="b">
<baz>1</baz>
</foo>
예 local:apply-node-includes($doc, ('bar','bang')))
를 반환, 및/또는 재귀 typeswitch의 일부 양식을 사용하지만, 지금까지 얻을 수 없었던 것 맞아. 'bang.text'는 손자 노드 만 포함하고 형제는 포함하지 않을 수도 있지만 어쩌면 너무 많이 묻는 것입니다.
함수가 문자열이 아닌 xs : QNames 시퀀스를 사용하는 것을 고려하십시오. XML은 기본 네임 스페이스를 사용하기 때문에 작동하지만 네임 스페이스가있는 경우 문제가 발생합니다. –