Hello Stackoverflow社区!
我有以下XML结构:
<fruit>
<id>1</id>
<name>Apple</name>
<species>Tree</species>
<features>
<from>Reineta</from>
<into>Golden</into>
</features>
</fruit>
<fruit>
<id>2</id>
<name>Orange</name>
<species>Tree</species>
<features>
<from>Citric</from>
<into>Mediterranean</into>
</features>
</fruit>
<fruit>
<id>3</id>
<name>Peach</name>
<species>Tree</species>
<features>
<from>Golden</from>
</features>
</fruit>
如何获取那些的<name>
和<features>
个水果节点其中包含功能/ 节点?
我试过了:
//fruit/features[from][not(into)]
我只能获得<features>
,但如何在同一查询中获得<name>
?
非常感谢。
答案 0 :(得分:2)
如果这是XPath 1.0,那么最好的办法是使用union运算符(|
)来组合返回features
的XPath和返回name
的另一个XPath的结果:
//fruit/features[from and not(into)] | //fruit[features[from and not(into)]]/name
在更高版本的XPath中,您可以使用FLWOR表达式执行以下操作(假设fruit
元素一次只能包含一个features
元素):
for $fruit in //fruit[features[from and not(into)]]
return ($fruit/name,$fruit/features)
<强> demo
强>