我遇到了XML和XSL的问题, 这是我的XML文档的一部分:
<node1>
<node2>
<node3>text inside node3 I don't want select</node3>
text inside node2 that I want select
<node4> text in node4 I want select</node4>
</node2>
</node1>
node2里面有一些文本和2个子节点(node3和node4),我需要用子节点4中的文本选择node2中包含的文本除了一个 在node3中。 我还说node2的结构并不总是相同,有时它只有一些文本,或者可能有一些带有node3和/或node4的文本。 此外,node2中元素的顺序可能并不总是相同,但结果的顺序应该与XML的顺序相同。
感谢您的帮助。
答案 0 :(得分:2)
从node2
上下文开始,您可以使用
node3
内的所有后代文本节点
.//text()[not(parent::node3)]
或更一般地说,如果node3
可能包含子元素
<node2>
keep this
<node3>drop this <node7>drop this too</node7></node3>
<node4>keep this</node4>
</node2>
然后使用ancestor:: instead of
parent ::`
.//text()[not(ancestor::node3)]