Import Dienstprogramme

XPath (TMS)

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

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

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

  • Achse im Schritt

    • Unterstützt

      Vorfahre, Vorfahre-oder-Selbst, Attribut, Kind, Nachkomme, Nachfahre-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 child::, descendant, descendant-or-self, following::, previous::, following-sibling::, previous-sibling::, function last()

Grundregeln

  • / und // in Pfaden verwenden

  • Verwende einfache Anführungszeichen ' ' in Namen

  • Pipe verwenden | zum Zusammenführen der Anfragen

  • Namen sind Groß- und Kleinschreibung: <Body> unterscheidet sich von <body>

Beispiele

XPath-Beispiel 1 und XPath-Beispiel 2 (mit Namensraum) sind Beispieldateien für die folgenden:

  1. Alle Elemente und Attribute importieren

    //* | //@*

  2. Alle Elemente und den Wert von Attribut1 importieren

    (<elem1 Attribut1="translate" Attribut2="Do not translate"/>)

    //* | //@attribute1

  3. Alle Nachkommen untergeordneter Elemente importieren

    //Child//*

  4. Importiere ein Element lis und seine Abkömmlinge nur, wenn das Attribut translate='true' 

    (<lis translate="true">übersetzen dies</lis><lis translate="false">nicht übersetzen</lis>)

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

  5. Importiere alle Elemente und Nachkommen, wenn das Elementattribut translate='true' ist

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

  6. Wert des Attributs Text im Element Daten importieren

    <Daten Text="Text zur Übersetzung">

    //data/@text

  7. Importieren Sie das Element <mT:translation> und seine Abkömmlinge, außer Element <mT:ignore>

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

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

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

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

    (<lis translate="false">Nicht übersetzen)

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

  10. 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'])]

  11. Alle Elemente mit 'Link' ausschließen

    (<menu1link><tmenu41link>)

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

  12. Schließe alle Elemente aus, 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')])]

  13. Elemente PT importieren, wenn die übergeordnete LANG das Attribut „aktualisiert“ mit dem Jahr 2015 hat

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

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

  14. 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')]

  15. XML mit Namensraum

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

    • Alle Elemente in Child importieren:

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

    • Nur Elemente <Text> in <Child> 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']//*

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

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

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

  17. XML mit Namespace. Importieren Sie das Elementziel aus Element tu, aber nicht, wenn die Attribut-ID 'img' oder 'extra' enthält:

    1. Dateibeispiel:

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

    2. XPATH-Beispiel:

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

  18. Importiere alle Elemente außer 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 <Kommentar> und außer Elementen mit Attribut <... Attribut2="Nicht übersetzen"> und deren Nachkommen:

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

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

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

  21. Importiere alle Elemente und Attribute mit Ausnahme von Elementen mit dem Attribut Name= Zurück, Menü oder Zeit:

    //*[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 kann es besser sein, alle zu importieren und die nicht für den Import erforderlichen Attribute zu sperren. Nachdem die Segmente gesperrt wurden, kopieren Sie die Quelle in das Ziel im Editor, um das Original in die Übersetzung zu übertragen.

    1. Alle Elemente mit dem Attribut Name mit Werten sperren: Zurück, Menü oder Zeit und ihre Nachkommen:

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

    2. Alle Attribute von Name mit Werten sperren: Zurück, Menü oder Zeit 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 dieser Stichprobe:

<?xml version-"1.0" encoding="utf-8"?>
<root>
<element context1="Note in attribute of parentElement 1 - select ../@context1">
<field context2="Note in attribute 1 - select @context2" >for translation1</field>
<context3>Hinweis in Element 1 - wähle ../context3</context3>
</element>

<element context1="Note in attribute of parentElement 2">
<field context2="Note in attribute 2">für translation2</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 Quellsegmente importiert. Kontexthinweis-Elemente/Attribute vom allgemeinen Import in Elements&Attribute ausschließen.

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.