Sie den Standard-Namespace verwenden können. Sag einfach "Standard" :). Und sehen Sie so aus wie in Ihrem XML-Dokument:
SELECT b.EnvelopeID
FROM (SELECT xmltype ('
<DocuSignEnvelopeInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docgign.net/API/3.0">
<EnvelopeStatus>
<EnvelopeID>80621b17-97a8-926d945b602a</EnvelopeID>
</EnvelopeStatus>
</DocuSignEnvelopeInformation>') AS xml FROM DUAL) a,
XMLTABLE(xmlnamespaces(default 'http://www.docgign.net/API/3.0'),
'/DocuSignEnvelopeInformation/EnvelopeStatus' PASSING a.xml
COLUMNS EnvelopeID VARCHAR2(200) PATH 'EnvelopeID')b;
Wir können auch Ihre Variante reparieren. Zuerst haben Sie 'docgign' anstelle von 'docusign' im XML-Dokument. Repariere eines der beiden. Als Änderung '/ xsd_k: DocuSignEnvelopeInformation/xsd_k: EnvelopeStatus' mit '/ k: DocuSignEnvelopeInformation/k: EnvelopeStatus', denn dies ist der Standard-Namespace und letzte Änderung 'EnvelopeID' mit 'k: EnvelopeID':
SELECT EnvelopeID
FROM (SELECT xmltype ('
<DocuSignEnvelopeInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.net/API/3.0">
<EnvelopeStatus>
<EnvelopeID>80621b17-97a8-926d945b602a</EnvelopeID>
</EnvelopeStatus>
</DocuSignEnvelopeInformation>') AS xml FROM DUAL) a,
XMLTABLE(xmlnamespaces('http://www.w3.org/2001/XMLSchema' as "xsd_k",
'http://www.w3.org/2001/XMLSchema-instance' AS "xsi",
'http://www.docusign.net/API/3.0' AS "k"),
'/k:DocuSignEnvelopeInformation/k:EnvelopeStatus' PASSING a.xml
COLUMNS EnvelopeID VARCHAR2(200) PATH 'k:EnvelopeID')b;
Siehe HERE (Suche nach Standard-Namespace)
Wenn eine Standard-Namespace-Deklaration für ein Element verwendet wird, wird alle unqualifizierten Elementnamen in ihrem Umfang sind automatisch mit der angegebenen Namespace-Kennung zugeordnet ist.
Das ist der Grund, weil DocuSignEnvelopeInformation und alle anderen Knoten darunter den Namensraum xmlns = "http://www.docusign.net/API/3.0" haben. Wenn dieser Namespace nicht definiert wäre, hätten die Knoten keinen Namespace und Sie müssten den Namespace in der XML-Tabelle nicht verwenden.
Haben Sie Fehler? – Andrej
Danke Andrej! Ich habe keine Fehler bekommen, einfach nichts angezeigt. Aber die Antwort von Mottot unten funktioniert gut. Vielen Dank –