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

      Vorfahre, Vorfahre-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 Vorfahrenknoten 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 Verknüpfen 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. Importieren Sie alle Elemente und alle Attribute

    //* | //@*

  2. Importieren Sie alle Elemente und den Wert von Attribut1

    (<elem1 attribute1="übersetzen" attribute2="Nicht übersetzen"/>)

    //* | //@attribute1

  3. Importieren Sie alle Nachkommen von untergeordneten Elementen

    //Child//*

  4. Importieren Sie 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. Importieren Sie alle Elemente und Nachkommen, wenn das Attribut des Elements translate='true' ist

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

  6. Importieren Sie den Wert des Attributs Text im Element Data

    <Data Text="Text zur Übersetzung">

    //data/@text

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

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

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

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

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

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

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

  10. Schließen Sie 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ßen Sie alle Elemente aus, die 'link' enthalten

    (<menu1link><tmenu41link>)

    //*[not(contains(name(),'link'))]

  12. Schließen Sie alle Elemente aus, wenn sie oder ihr Vorfahr ein Attribut 'lis' haben, das 'link' enthält

    (<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 'Description' und 'Name' nur, wenn sie keine Nachkommen von den Elementen 'Definitions' oder 'Types' sind

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

    [(name()='Description') or (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> im <CONTRACT> den Wert <ORIGINAL> hat

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

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

    • importiere das 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' and not(contains(@id,'img') or contains(@id,'extra'))]/*[local-name()='target']

  18. Importieren Sie alle Elemente außer <comment> und <lis>, es sei denn, <lis translate="true"> und deren Nachkommen:

    //*[count(ancestor-or-self::node()[(name()='lis' and (not(@translate='true')) ) or name()='comment'])=0]

  19. Importieren Sie alle Elemente außer <comment> und außer Elementen mit dem Attribut <... attribute2="Do not translate"> und deren Nachkommen:

    //*[count(ancestor-or-self::node()[(@attribute2='Do not translate') or name()='comment'])=0]

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

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

  21. Importieren Sie alle Elemente und Attribute, außer Elementen mit dem Attribut Name= Back, Menu oder Time:

    //*[not(ancestor-or-self::node()[@Name='Back' or @Name='Menu' or @Name='Time'])] | //@*[not(ancestor-or-self::node()[@Name='Back' or @Name='Menu' or @Name='Time'])]

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

    1. Sperren Sie alle Elemente mit dem Attribut Name mit den Werten: Back, Menu oder Time und deren Nachkommen:

      //*[@Name='Back' or @Name='Menu' or @Name='Time']/descendant-or-self::*

    2. Sperren Sie alle Attribute von Name mit den Werten: Back, Menu oder Time und deren Nachkommen

      //*[@Name='Back' or @Name='Menu' or @Name='Time']//@*

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 des übergeordneten Elements 1 - auswählen ../@context1">
<field context2="Hinweis im Attribut 1 - auswählen @context2" >für Übersetzung1</field>
<context3>Hinweis im Element 1 - auswählen ../context3</context3>
</element>

<element context1="Hinweis im Attribut des übergeordneten Elements 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 eigenen Element (Kontext 2): @context2

  • Geschwisterelement (Kontext 3): ../context3

Wenn importiert Elemente&Attribute: //* 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.