我有以下xml文档.我正在尝试选择任何具有相同value2的兄弟并且value3未关闭的子项.
<root>
<child>
<value1>Type A</value1>
<value2>Class 1</value2>
<value3>Active</value3>
</child>
<child>
<value1>Type B</value1>
<value2>Class 1</value2>
<value3>Closed</value3>
</child>
<child>
<value1>Type C</value1>
<value2>Class 2</value2>
<value3>Active</value3>
</child>
<child>
<value1>Type D</value1>
<value2>Class 2</value2>
<value3>Active</value3>
</child>
<child>
<value1>Type E</value1>
<value2>Class 3</value2>
<value3>Active</value3>
</child>
</root>
Run Code Online (Sandbox Code Playgroud)
我的尝试是:
// child [following-sibling :: child/value2 = value2 and value3!='Closed']
但是这没有将多个条件应用于下一个兄弟函数的期望结果.
有任何想法吗?
//child[value2 = following-sibling::child[not(value3 = 'Closed')]/value2]
Run Code Online (Sandbox Code Playgroud)
要适用于任何兄弟,following-sibling请将preceding-sibling轴和轴联合起来.
//child[value2 = (following-sibling::child | preceding-sibling::child)[not(value3 = 'Closed')]/value2]
Run Code Online (Sandbox Code Playgroud)