XPath steht für XML Path Sprache. Er kann verwendet werden, um in einem XML-Dokument durch Elemente und Attribute zu navigieren. Wenn XPATH neu ist, lesen Sie bitte zuerst das XPath-Tutorial und studieren Sie die offizielle XPATH-Dokumentation.
KI Chatbots können bei der Generierung und Verifizierung von Xpath sehr effektiv sein.
Eine Untergruppe von XPath 1.0 wird mit den folgenden Einschränkungen unterstützt:
-
Achse im Schritt
-
Unterstützt
Vorfahre, Vorfahre-oder-Selbst, Attribut, untergeordnetes Element, Nachkomme, Nachkomme-oder-Selbst
-
Nicht unterstützt
folgenden, vorhergehenden, nachfolgenden Geschwistern, vorhergehenden Geschwistern, Namensraum
-
-
Prädikat
-
Unterstützt
Bedingungen für aktuelle Knoten oder Ahnenknoten und deren Eigenschaften (Attribute, Namensräume)
-
Nicht unterstützt (zum Beispiel)
Positionsnummer, Achse untergeordnetes Element::, Abkömmling, Abkömmling oder Selbst, folgend::, vorangehend::, nachfolgende Geschwister::, vorangehende Geschwister::, Funktion last()
-
Grundregeln
-
/
und//
in Pfaden verwenden -
Einfache Anführungszeichen
'
in Namen verwenden -
Pipe verwenden
|
zum Verbinden der Anfragen -
Namen sind großgeschrieben:
<Body>
ist anders als<body>
Beispiele
XPath-Beispiel 1 und XPath-Beispiel 2 (mit Namespace) sind Beispieldateien für Folgendes:
-
Alle Elemente und Attribute importieren
//* | //@*
-
Alle Elemente und den Wert von Attribut1 importieren
(<elem1 Attribut1="translate" Attribut2="Nicht übersetzen"/>)
//* | //@attribute1
-
Alle Nachkommen untergeordnetes Elemente importieren
//Child//*
-
Ein Element lis und seine Nachkommen nur importieren, wenn das Attribut translate='true'
(<lis translate="true">übersetze dies</lis><lis translate="false">übersetze dies nicht</lis>)
//lis[@translate='true']/descendant-or-self::*
-
Alle Elemente und Nachkommen importieren, wenn das Element-Attribut translate='true' ist
//*[@translate='true']/descendant-or-self::*
-
Wert des Attributs Text im Element Daten importieren
<Datentext="Text zur Übersetzung">
//data/@text
-
Importieren Sie das Element
<mT:translation>
und seine Nachkommen, mit Ausnahme des Elements<mT:ignore>
//mT:translation/descendant-or-self::*[not(ancestor-or-self::mT:ignore)]
-
Alle Elemente mit dem Attribut translate='false' ausschließen
//*[not(@translate='false')]
-
Elemente „lis“ mit dem Attribut translate=„false“ ausschließen
(<lis translate="false">Nicht übersetzen)
//*[not(self::lis[@translate='false'])]
-
Elemente „lis“ mit dem Attribut translate=„false“ und deren Nachkommen ausschließen
(<lis translate="false"><p>Nicht übersetzen)
//*[not(ancestor-or-self::lis[@translate='false'])]
-
Alle Elemente mit „Verknüpfung“ ausschließen
(<menu1link><tmenu41link>)
//*[not(contains(name(),'link'))]
-
Alle Elemente ausschließen, wenn sie oder ihr Vorfahre ein Attribut „lis“ mit „link“ haben
(<ele lis=menu1link>, <mon lis=tmenu41link>)
//*[not(ancestor-or-self::node()[contains(@lis, 'link')])]
-
Elemente PT importieren, wenn das übergeordnetes Element LANG das Attribut „aktualisiert“ mit dem Jahr 2015 hat
(<LANG updated="20150213T121526"><PT>'
/LANG[enthält(@updated,'2015')]/PT
-
Elemente "Beschreibung" und "Name" nur importieren, wenn sie keine Nachkommen der Elemente "Definitionen" oder "Typen" sind
://* [not(ancestor-or-self::**[(name()='Definitionen') oder (name()='Types')]]/*
[(name()='Beschreibung') oder (name()='Name')]
-
XML mit Namensraum
<root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Untergeordnetes Element><Text>übersetzen dieses</Text></untergeordnetes Element>
-
Importiere alle Elemente in
<Child>:
//*[local-name()='Child']//*
-
nur Elemente
<Text>
inuntergeordnetes Element importieren:
//*[local-name()='Child']/*[local-name()='Text']
-
Importiere alle Elemente unter Element
<CONTRACT>
, wenn Attribut<CATEGORY>
in<CONTRACT>
den Wert<ORIGINAL> hat
://*[local-name()='CONTRACT' und @CATEGORY='ORIGINAL']//*
-
-
XML mit Namensraum und Attributen
<root>
xmlns:xhtml="http://www.w3.org/1999/xhtml"<Untergeordnetes Element übersetzen='1'>untergeordnetes Element übersetzen>
-
Untergeordnetes Element importieren, wenn das Attribut „Translate“ 1 ist:
//*[local-name()=„Untergeordnetes Element“][@*[local-name()=„Translate“]=„1“]
-
importiere alle Elemente mit dem Attribut translate=true:
//*[@*[local-name()='translate']='true']
-
-
XML mit Namensraum. Importieren der Zielsprache des Elements aus Element
tu
, aber nicht, wenn die Attribut ID "img" oder "extra" enthält:-
Dateibeispiel:
<tu ID="pages|Inhalt|extra"><ori xml:lang="en">Kurs einer</ori><Zielsprache xml:lang="lang">Kurs einer</Zielsprache></tu>
-
XPATH-Beispiel:
/*[local-name()='tu' und not(enthält(@id,'img') oder enthält(@id,'extra')]/*[local-name()='Zielsprache']
-
-
Importiere alle Elemente mit Ausnahme von
<comment>
und<lis>
es sei denn<lis translate="true">
und deren Nachkommen:/* [count(ancestor-or-self::node()[(name()='lis' und (not(@translate='true')) ) oder name()='kommentieren'])=0]
-
Alle Elemente importieren außer
kommentieren> und mit Ausnahme von Elementen mit Attribut
<... Attribut2="Nicht übersetzen">
und deren Nachkommen:/* [count(ancestor-or-self::node()[(@attribute2='Nicht übersetzen') oder name()='kommentieren'])=0]
-
Werte der Attribute
varName
undglossName
importieren, aber nur, wenn deren Vorfahren Attributattribute1="translate"
oderattribute1="edit"
haben:/*[(self::node()[@attribute1='translate' oder @attribute1='edit']]//@*[local-name()='varName' oder local-name()='glossName']
-
Importiere alle Elemente und Attribute mit Ausnahme von Elementen mit dem Attribut
Name=Zurück
,Menü
oderZeit
:/* [not(ancestor-or-self::node()[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit']] | //@* [not(ancestor-or-self::node()[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit']]
In diesem Fall ist es möglicherweise besser, alle zu importieren und die Attribute zu sperren, die nicht importiert werden müssen. Nachdem die Segmente gesperrt wurden, kopieren Sie den Ausgangssprache in den Zielsprache im Editor, Reihenfolge das Original in die Übersetzung übernommen werden kann.
-
Sperre alle Elemente mit dem Attribut
Name
mit Werten:Zurück
,Menü
oderZeit
und ihre Nachkommen://*[@Name='Back' or @Name='Menu' or @Name='Time']/descendant-or-self::*
-
Alle Attribute des
Namens
mit Werten sperren:Zurück
,Menü
oderZeit
und ihre Nachkommen/*[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit']//@*
-
Einige externe Beispiele.
Kontexthinweis
Kontexthinweise können in übersetzte Segmente importiert werden.
Es gibt drei Beispiele in diesem Muster:
<?xml version-"1.0" encoding="utf-8"?> <root> <element context1="Hinweis im Attribut von übergeordnetemElement 1 - auswählen ../@context1"> <field context2="Notiz in Attribut 1 - @context2 auswählen" >für Übersetzung1</field> <context3>Hinweis in Element 1 - auswählen ../context3</context3> </element> <element context1="Hinweis im Attribut von übergeordnetemElement 2"> <field context2="Note in Attribut 2">für Übersetzung2</field> <context3>Hinweis in Element 2</context3> </element> </root>
-
Attribut im übergeordneten Element (Kontext 1): ../@Context1
-
Attribut im Self-Element (context2): @context2
-
Geschwisterelement (Kontext 3): ../Kontext3
Beim Import von Elementen&Attributen: //*
wird der Inhalt des Kontexthinweis auch in die Ausgangssprache importiert. KontexthinweisElemente/Attribute vom allgemeinen importieren in Elements&Attribute ausschließen.