Häufig gestellte Fragen zu XPath/XQuery

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  XPath/XQuery: Ausdrücke, Funktionen, Variablen > XPath/XQuery-Ausdrücke und -Funktionen >

Häufig gestellte Fragen zu XPath/XQuery

 

Wenn sich Ihr XPath-Ausdruck innerhalb der sich wiederholenden Tabellenzeile befindet, so ist das Element, das dem Zeilenelement der Tabelle entspricht, z.B. dem Element Row, der Kontext-Node.

 

Wenn Sie einen absoluten Pfad, z.B. $XML/Row/@id, verwenden, gibt der XPath-Ausdruck eine Sequenz der @id-Werte aller Row -Elemente zurück. Wenn Sie eine Operation verwenden, die einen atomaren Wert erwartet, wird durch die Operation ein Fehler generiert.
Wenn Sie einen relativen Pfad verwenden, z.B. @id, gibt der XPath-Ausdruck den einzelnen atomaren Wert des einzigen @id-Attributes des aktuellen Row-Elements zurück, da Sie für jede sich wiederholende Zeile einen Kontext $XML/Row haben.

 

 

Click to expand/collapseIch habe einen XPath-Ausdruck, dessen Ergebnis ein Element mit gemischtem Inhalt ist (Text und Element). Anstatt den Textwert des adressierten Elements und seine Nachfahren zu erhalten (wie dies im XPath eigentlich definiert ist), erhalte ich nur den Textinhalt des entsprechenden Elements. Woran liegt das?

 

Wenn das Ergebnis eines XPath Locator-Ausdrucks ein Element mit gemischtem Inhalt (Text und Element/e) ist, so wird nur der Textinhalt des gemischten Elements zurückgegeben. Der Textinhalt der untergeordneten Elemente wird ignoriert.

 

Am besten lässt sich dies anhand eines Beispiels für die Aktion "Node(s) aktualisieren" erklären. Angenommen, Sie verwenden die in der Abbildung unten definierte Aktion "Node(s) aktualisieren".

XPathMixedElementNonCompliance

Wenn die XML-Struktur die folgende Struktur und den folgenden Inhalt hätte:

 

<Element1>

   <source>AAA

      <subsource>BBB</subsource>

  </source>

  <target></target>

</Element1>

 

dann würde das target-Element mit dem Textinhalt des Elements mit gemischtem Inhalt des Namens source aktualisiert, während der Inhalt seines Child-Elements subsource ignoriert würde. Der Node mit dem Namen target wird zu <target>AAA</targetaktualisiert.

 

Anmerkung:Wenn Sie möchten, dass der Textinhalt untergeordneter Nodes inkludiert werden soll, verwenden Sie eine string-Funktion. Für das XML-Beispiel oben, wäre das Ergebnis des Ausdrucks string($XML1/Element1/source, '') z.B. "AAABBB".

 

Anmerkung:In Diagrammen wird die XPath-kompatible Methode der Serialisierung verwendet: Wenn das Ergebnis eines XPath Locator-Ausdrucks ein Element mit gemischtem Inhalt ist, so wird auch der Textinhalt von untergeordneten Elementen serialisiert.

 

 


© 2019 Altova GmbH