2012-04-01 3 views
1

Ich möchte Tags in XML extrahieren, die Attributbedingung wie name="var" enthält. Aber ich weiß nicht, welches Element dieses Attribut Zustand gelangt ist, so kann ich XQuery verwenden folgende:Möchten * Bedingung in Xquery verwenden

<ab> 
    <c name="var"> 
     <d name ="var"> 
      <e> 
      </e> 
     </d> 
     <f> 
     </f> 
    </c> 
</ab> 

XQuery:

doc('abc.xml')//ab/*[@name="var"] 

Ich habe XML von CLANG erzeugt, die keine Werte für Variablen hat aber alles ist nur als Attribut vorhanden.

+0

Haben Sie eine Frage? – Marcin

Antwort

0

Sie wählen derzeit alle Elemente in abc.xml aus, die untergeordnete Elemente eines Elements mit der Bezeichnung <ab> sind und das angegebene Attribut haben.

Wie Sie „extract-Tags in XML, die enthält“ wollen und das Dokument Ich denke, man tatsächlich alle Elemente innerhalb der obersten Ebene-Element <ab>, abfragen möchten, die als

doc('abc.xml')/ab//*[@name="var"] 

und Rückkehr geschrieben werden würde beide Elemente <c> und <d> mit ihren jeweiligen Kindknoten.

<c name="var"> 
    <d name="var"> 
    <e/> 
    </d> 
    <f/> 
</c> 

<d name="var"> 
    <e/> 
</d> 
0

Scheint, wie diese

doc('abc.xml')//*[@name="var"] 

sollte ein dup sein muss arbeiten, aber nicht besonders effizient sein, abhängig von Ihrem XQuery-Prozessor.