XML-element-namespace, meine XPATH funktioniert nicht
Bekam ich die folgende XML:
<root>
<items>
<item>
<title>Item</title>
<details>
<data xmlns="http://some_url">
<length>10</length>
<weight>1.2</weight>
</data>
</details>
</item>
</items>
</root>
Folgenden XPath funktioniert nicht Bedeutung nichts gedruckt wie der "data" - element nicht vorhanden ist:
/root/items/item/details/data
Aber wenn ich Sie entfernen "xmlns-namespace" - Attribut des "data" - element es-Inhalt ist gedruckt.
Wie muss der xpath-Ausdruck Aussehen zu arbeiten, ohne Sie zu löschen "xmlns-namespace" - Attribut des "data" - element?
Ich bin mit SÄCHSISCHEN und XSL 1.0.
InformationsquelleAutor der Frage Vojtech | 2012-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist einer der wichtigsten FAQ in XPath /XSLT:
XPath interpretiert ein unprefixed element name Zugehörigkeit zur "no namespace" und dies ist der Grund, warum Elemente mit unprefixed Namen, die Zugehörigkeit zu einer Standard - (nicht leerer) namespace sind nicht aktiviert, wenn nur Ihre unprefixed name angegeben ist als node-test in einem XPath-Ausdruck.
Die Lösung ist entweder:
Erstellen Sie einen namespace verbindlich, wenn Sie durch ein Präfix (sagen
"x"
) ist im Zusammenhang mit der Standard-namespace, und geben Sie dannx:elementName
stattelementName
.Lange, hässliche und unzuverlässige Ausdrücke wie:
*[name() = 'elementName']
Hier ist eine XSLT-transformation mithilfe der oben beschriebenen methode1. :
Wenn diese transformation angewendet wird (mit sächsischen 6.5.4 oder alle anderen kompatiblen XSLT 1.0-Prozessor) auf der mitgelieferten XML-Dokument:
Die richtige/wollte-Knoten wird ausgewählt und der zugehörige string-Wert ist, in die Ausgabe kopiert:
InformationsquelleAutor der Antwort Dimitre Novatchev
In XPath, ordnen Sie ein Präfix für den namespace. Wie Sie das tun, hängt von der XPath-software/- Bibliothek, die Sie verwenden, aber nur dann, wenn Sie bei der Zuordnung der Namensraum-URI
http://some_url
mit dem namespace-PräfixsomeUrl
ändern Sie die XPath-Ausdruck wie folgt:InformationsquelleAutor der Antwort O. R. Mapper