Importwerkzeuge

XPath (TMS)

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

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

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

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

  • Achse im Schritt

    • Unterstützt

      ancestor, ancestor-or-self, attribute, untergeordnetes Element, descendant, descendant-or-self

    • Nicht unterstützt

      following, preceding, following-sibling, preceding-sibling, namespace

  • Prädikat

    • Unterstützt

      Bedingungen für das aktuelle Element oder übergeordnete Elemente und deren Eigenschaften (Attribute, Namespaces)

    • Nicht unterstützt (zum Beispiel)

      Positionsnummer, Achse child::, descendant, descendant-or-self, following::, preceding::, following-sibling::, preceding-sibling::, Funktion last()

Grundregeln

  • Verwenden Sie / und // in Pfaden

  • Verwenden Sie einfache Anführungszeichen ' ' in Namen

  • Verwenden Sie einen Pipe-Operator | zum Verknüpfen der Anfragen

  • Namen unterscheiden zwischen Groß- und Kleinschreibung: <Body> ist anders als <body>

Beispiele

XPath-Beispiel 1 und XPath-Beispiel 2 (mit Namespace) sind Beispieldateien für Folgendes:

  1. Importieren Sie alle Elemente und alle Attribute

    //* | //@*

  2. Importieren Sie alle Elemente und den Wert von attribute1

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

    //* | //@attribute1

  3. Importieren Sie alle Nachfahren von untergeordneten Elementen

    //Child//*

  4. Importieren Sie ein Element lis und seine Nachfahren 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 Nachfahren, 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 für die Übersetzung\">

    //data/@text

  7. Importieren Sie das Element <MT:translation> und seine untergeordneten Elemente, mit Ausnahme des Elements <MT:ignore>

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

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

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

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

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

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

  10. Ausschließen Sie Elemente 'lis' mit dem Attribut translate='false' und deren untergeordnete Elemente

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

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

  11. Ausschließen Sie alle Elemente, die 'link' enthalten

    (<menu1link><tmenu41link>)

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

  12. Ausschließen Sie alle Elemente, wenn sie oder ihr übergeordnetes Element ein Attribut 'lis' haben, das 'link' enthält

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

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

  13. Importieren Sie PT-Elemente, wenn ihr übergeordnetes Element LANG das Attribut 'updated' mit dem Jahr 2015 hat

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

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

  14. Importieren Sie die Elemente 'Description' und 'Name' nur, wenn sie keine untergeordneten Elemente der Elemente 'Definitions' oder 'Types' sind

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

    [(name()='Description') or (name()='Name')]

  15. XML mit Namespace

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

    • importieren Sie alle Elemente in <untergeordnetes Element>:

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

    • importieren Sie nur Elemente <Text> in <untergeordnetes Element>:

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

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

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

  16. XML mit Namespace und Attributen <root> xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"<Child translate='1'>translate this</Child>

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

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

  17. XML mit Namespace. Importieren Sie das Element Zielsprache 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\">Course one</ori><target xml:lang=\"lang\">Course one</target></tu>

    2. XPATH-Beispiel:

      //*[local-name()='tu' and not(contains(@ID,'img') or contains(@ID,'extra'))]/*[local-name()='Zielsprache']

  18. Importieren Sie alle Elemente außer <kommentieren> und <lis>, sofern nicht <lis translate=\"true\"> und deren Nachfahren:

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

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

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

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

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

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

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

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

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

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

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

      //*[@ID='Back' or @ID='Menu' or @ID='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 übergeordnetes Element 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 übergeordnetes Element 2\">
<field context2=\"Hinweis im Attribut 2\">für Übersetzung2</field>
<context3>Hinweis im Element 2</context3>
</element>

</root>
  • Attribut im übergeordnetes Element (Kontexthinweis): ../@context1

  • Attribut im eigenen Element (Kontexthinweis): @context2

  • Geschwisterelement (Kontexthinweis): ../context3

Wenn Sie Elements&Attributes: //* importieren, wird der Content des Kontexthinweises ebenfalls in die Ausgangssprache-Segmente importiert. Schließen Sie die Elemente/Attribute des Kontexthinweises vom allgemeinen import in Elements&Attributes 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.