Importwerkzeuge

XPath (TMS)

Inhalte werden von Phrase Language AI maschinell aus dem Englischen übersetzt.

XPath steht für XML-Pfad-Sprache. Es kann verwendet werden, um durch Elemente und Attribute in einem XML-Dokument zu navigieren. Wenn Sie neu bei XPATH sind, sehen Sie sich bitte zuerst das XPath-Tutorial an und studieren Sie die offizielle XPATH-Dokumentation.

AI-Chatbots können sehr effektiv beim Generieren und Überprüfen von Xpath sein.

Ein Teilmenge von XPath 1.0 wird mit den folgenden Einschränkungen unterstützt:

  • Achse im Schritt

    • Unterstützt

      Vorfahr, Vorfahr-oder-selbst, Attribut, untergeordnetes Element, Nachkomme, Nachkomme-oder-selbst

    • Nicht unterstützt

      folgend, vorhergehend, folgendes Geschwister, vorhergehendes Geschwister, Namensraum

  • Prädikat

    • Unterstützt

      Bedingungen für den aktuellen Knoten oder Vorfahr-Knoten und dessen Eigenschaften (Attribute, Namensräume)

    • Nicht unterstützt (zum Beispiel)

      Positionsnummer, Achse child::, Nachkomme, Nachkomme-oder-selbst, following::, preceding::, following-sibling::, preceding-sibling::, Funktion last()

Grundregeln

  • Verwenden Sie / und // in Pfaden

  • Verwenden Sie einfache Anführungszeichen ' ' in Namen

  • Verwenden Sie ein Pipe-Symbol | zum Verbinden der Anfragen

  • Namen sind groß- und kleinschreibungsempfindlich: <Body> ist anders als <body>

Beispiele

XPath-Beispiel 1 und XPath-Beispiel 2 (mit Namensraum) sind Beispiel-Dateien für Folgendes:

  1. Importiere alle Elemente und alle Attribute

    //* | //@*

  2. Importiere alle Elemente und den Wert von Attribut1

    (<elem1 attribute1="translate" attribute2="Do not translate"/>)

    //* | //@attribute1

  3. Importiere alle Nachkommen von Kind-Elementen

    //Child//*

  4. Importiere ein Element lis und seine Nachkommen nur, wenn das Attribut translate='true' ist 

    (<lis translate="true">translate this</lis><lis translate="false">do not translate this</lis>)

    //lis[@translate='true']/descendant-or-self::*

  5. Importiere alle Elemente und Nachkommen, wenn das Attribut des Elements translate='true' ist

    //*[@translate='true']/descendant-or-self::*

  6. Importiere den Wert des Attributs Text im Element Daten

    <Daten Text="Text zur Übersetzung">

    //data/@text

  7. Importiere das <mT:translation> Element und seine Nachkommen, außer dem Element <mT:ignore>

    //mT:translation/descendant-or-self::*[nicht(ancestor-or-self::mT:ignore)]

  8. Schließe alle Elemente mit dem Attribut translate='false' aus

    //*[not(@translate='false')]

  9. Schließe Elemente 'lis' mit dem Attribut translate='false' aus

    (<lis translate="false">Do not translate)

    //*[not(self::lis[@translate='false'])]

  10. Schließe Elemente 'lis' mit dem Attribut translate='false' und deren Nachkommen aus

    (<lis translate="false"><p>Do not translate)

    //*[not(ancestor-or-self::lis[@translate='false'])]

  11. Schließe alle Elemente aus, die 'link' enthalten

    (<menu1link><tmenu41link>)

    //*[nicht(enthält(name(),'link'))]

  12. Schließe alle Elemente aus, wenn sie oder ihre Vorfahren ein Attribut 'lis' mit 'link' enthalten

    (<ele lis=menu1link>, <mon lis=tmenu41link>)

    //*[not(ancestor-or-self::node()[contains(@lis, 'link')])]

  13. Importiere Elemente PT, wenn ihr übergeordnetes LANG das Attribut 'updated' mit dem Jahr 2015 hat

    (<LANG updated="20150213T121526"><PT>'

    //LANG[contains(@updated,'2015')]/PT

  14. Importiere die Elemente 'Beschreibung' und 'Name' nur, wenn sie keine Nachkommen von Elementen 'Definitionen' oder 'Typen' sind

    ://*[nicht(ancestor-or-self::*[(name()='Definitions') oder (name()='Types')])]/*

    [(name()='Beschreibung') oder (name()='Name')]

  15. XML mit Namensraum

    <root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Child><Text>translate this</Text></Child>

    • Importiere alle Elemente in <Child>:

      //*[local-name()='Child']//*

    • Importiere nur Elemente <Text> in <Child>:

      //*[local-name()='Child']/*[local-name()='Text']

    • Importiere alle Elemente unter dem Element <CONTRACT>, wenn das Attribut <CATEGORY> in <CONTRACT> den Wert <ORIGINAL> hat

      ://*[local-name()='CONTRACT' und @CATEGORY='ORIGINAL']//*

  16. XML mit Namensraum und Attributen <root> xmlns:xhtml="http://www.w3.org/1999/xhtml"<Child translate='1'>übersetze dies</Child>

    • Importiere Element <Child>, wenn das Attribut translate 1 ist: //*[local-name()="Child"][@*[local-name()='translate']='1']

    • Importiere alle Elemente mit dem Attribut translate=true: //*[@*[local-name()='translate']='true']

  17. XML mit Namensraum. Importiere das Element target aus dem Element tu, aber nicht, wenn das Attribut id 'img' oder 'extra' enthält:

    1. Dateibeispiel:

      <tu id="pages|content|extra"><ori xml:lang="en">Kurs eins</ori><target xml:lang="lang">Kurs eins</target></tu>

    2. XPATH-Beispiel:

      //*[local-name()='tu' und nicht(contains(@id,'img') oder contains(@id,'extra'))]/*[local-name()='target']

  18. Importiere alle Elemente außer <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()='comment'])=0]

  19. Importiere alle Elemente außer <comment> und außer Elemente mit Attribut <... attribute2="Nicht übersetzen"> und deren Nachkommen:

    //*[count(ancestor-or-self::node()[(@attribute2='Nicht übersetzen') oder name()='comment'])=0]

  20. Importiere Werte der Attribute varName und glossName, aber nur, wenn ihre Vorfahren das Attribut attribute1='translate' oder attribute1='edit' haben:

    //*[(self::node()[@attribute1='translate' oder @attribute1='edit'])]//@*[local-name()='varName' oder local-name()='glossName']

  21. Importiere alle Elemente und Attribute außer Elemente mit dem Attribut Name= Zurück, Menü oder Zeit:

    //*[nicht(ancestor-or-self::node()[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit'])] | //@*[nicht(ancestor-or-self::node()[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit'])]

    In diesem Fall kann es besser sein, alles zu importieren und die nicht benötigten Attribute für den Import zu sperren. Sobald Segmente gesperrt sind, kopiere die Quelle in das Ziel im Editor, um das Original zur Übersetzung zu übertragen.

    1. Sperre alle Elemente mit dem Attribut Name mit Werten: Zurück, Menü oder Zeit und deren Nachkommen:

      //*[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit']/descendant-or-self::*

    2. Sperren Sie alle Attribute von Name mit Werten: Zurück, Menü oder Zeit und deren Nachkommen

      //*[@Name='Zurück' oder @Name='Menü' oder @Name='Zeit']//@*

Einige externe Beispiele.

Kontexthinweis

Kontextnotizen 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 übergeordnetem Element 1 - wählen Sie ../@context1">
<field context2="Hinweis im Attribut 1 - wählen Sie @context2" >für Übersetzung1</field>
<context3>Hinweis im Element 1 - wählen Sie ../context3</context3>
</element>

<element context1="Hinweis im Attribut von übergeordnetem Element 2">
<field context2="Hinweis im Attribut 2">für Übersetzung2</field>
<context3>Hinweis im Element 2</context3>
</element>

</root>
  • Attribut im übergeordneten Element (Kontext 1): ../@context1

  • Attribut im Selbst-Element (Kontext2): @context2

  • Geschwisterelement (Kontext 3): ../context3

Wenn Elemente&Attribute: //* importiert werden, wird der Inhalt des Kontexthinweises auch in die Quellsegmente importiert. Schließen Sie die Kontexthinweis-Elemente/Attribute vom allgemeinen Import in Elemente&Attribute aus.

War dieser Beitrag hilfreich?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.