2016-10-26 25 views
0

Hello Stackoverflowコミュニティ!Xpathは、特定のノードを持たない2つの異なるノードを選択します。

私は、次の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>を得ることができますか?

ありがとうございました。

答えて

2

これは、XPath 1.0であれば、あなたの最善の策はfeaturesを返すXPathとnameを返す別のXPathから結果を結合するUNION演算子(|)を使用することです:、XPathのの上位バージョンで

//fruit/features[from and not(into)] | //fruit[features[from and not(into)]]/name 

あなたは(fruit要素を仮定すると、一度に一つだけfeaturesの要素が含まれていることができます)次の操作を実行するためにFLWOR式を使用することができます。

for $fruit in //fruit[features[from and not(into)]] 
return ($fruit/name,$fruit/features) 

demo

+1

デモリンク/ボタンをありがとうございました。 – Rao

+0

ありがとうございます!非常に便利でクリアです! – Joanmacat

関連する問題