Importer des services

XPath (TMS)

Le contenu est traduit de l’anglais par Phrase Language AI.

XPath signifie XML Path Language. Il peut être utilisé pour naviguer à travers les éléments et les attributs dans un document XML. Si vous êtes nouveau sur XPATH, veuillez d’abord consulter le tutoriel XPath et étudier la documentation officielle.

Un sous-ensemble de XPath 1.0 est pris en charge avec les limitations suivantes :

  • Axe au pas

    • Supporté

      ancêtre, ancêtre-ou-soi, attribut, enfant, descendant, descendant-ou-soi

    • Non supporté

      Espace de noms suivant, précédent, suivant-frère, précédent-frère,

  • Prédicat

    • Supporté

      conditions sur le nœud actuel ou les nœuds ancêtres et ses propriétés (attributs, espaces de noms)

    • Non supporté (par exemple)

      numéro de position, axe enfant ::, descendant, descendant-ou-soi, suivant ::, précédent ::, suivant-frère ::, précédent-frère ::, fonction last()

Règles de base

  • Utiliser / et // dans les chemins

  • Utiliser des guillemets simples ' ' dans les noms

  • Utiliser un tuyau | pour fusionner les demandes

  • Les noms sont sensibles à la casse : <Body> est différent de <body>

Exemples

XPath exemple 1 et XPath exemple 2 (avec espace de noms) sont des exemples de fichiers pour les suivants :

  1. Importer tous les éléments et tous les attributs

    //* | //@*

  2. Importer tous les éléments et la valeur de l'attribut1

    (<elem1 attribute1="translate" attribute2="Ne pas traduire"/>)

    //* | //@attribute1

  3. Importer tous les descendants de Child elements

    //Child//*

  4. Importer un élément lis et ses descendants uniquement si l'attribut translate='true' 

    (<lis translate="true">translate this</lis><lis translate="false">ne pas traduire this</lis>)

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

  5. Importer tous les éléments et descendants si l'attribut de l'élément est translate='true'

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

  6. Importer la valeur de l'attribut Texte dans l'élément Données

    <Data Text="Texte à traduire">

    //data/@text

  7. Importer l'élément <mT:translation> et ses descendants, sauf l'élément <mT:ignore>

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

  8. Exclure tous les éléments ayant l'attribut translate='false'

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

  9. Exclure les éléments 'lis' avec l'attribut translate='false'

    (<lis translate="false">Ne pas traduire)

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

  10. Exclure les éléments 'lis' avec l'attribut translate='false' et leurs descendants

    (<lis translate="false"><p>Ne pas traduire)

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

  11. Exclure tous les éléments contenant 'lien'

    (<menu1link><tmenu41link>)

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

  12. Exclure tous les éléments si eux ou leur ancêtre ont un attribut 'lis' contenant 'link'

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

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

  13. Importer les éléments PT si leur LANG parent a l'attribut 'updated' avec l'année 2015

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

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

  14. Importer les éléments 'Description' et 'Nom' uniquement s'ils ne sont pas descendants des éléments 'Définitions' ou 'Types'

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

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

  15. XML avec espace de noms

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

    • importer tous les éléments dans <Enfant> :

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

    • importer uniquement les éléments <Texte> dans <Enfant> :

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

    • importer tous les éléments sous l'élément <CONTRACT>, si l'attribut <CATEGORY> dans <CONTRACT> a la valeur <ORIGINAL>

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

  16. XML avec espace de noms et attributs <root> xmlns:xhtml="http://www.w3.org/1999/xhtml"<Child translate='1'>translate this</Child>

    • élément d'importation <Child> si l'attribut traduire est 1: //*[local-name()="Child"][@*[local-name()='translate']='1']

    • importer tous les éléments ayant l'attribut translate=true: //*[@*[local-name()='translate']='true']

  17. XML avec espace de noms. Importer la cible de l'élément depuis l'élément tu, mais pas lorsque l'identifiant de l'attribut contient 'img' ou 'extra' :

    1. Exemple de fichier :

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

    2. Exemple XPATH :

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

  18. Importer tous les éléments sauf <commentaire> et <lis> sauf <lis translate="true"> et leurs descendants :

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

  19. Importer tous les éléments sauf <commentaire> et sauf les éléments avec attribut <... attribute2="Ne pas traduire"> et leurs descendants :

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

  20. Importer les valeurs des attributs varName et glossName mais uniquement si leurs ancêtres ont pour attribut attribut1='translate' ou attribut1='edit' :

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

  21. Importer tous les éléments et attributs à l'exception des éléments ayant l'attribut Nom= Retour, Menu ou Heure :

    //*[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'])]

    Dans ce cas, il peut être préférable de tout importer et de verrouiller les attributs non requis pour l'importation. Une fois les segments verrouillés, copiez la source dans la cible dans l’éditeur afin que l’original soit transféré à la traduction.

    1. Verrouiller tous les éléments ayant l'attribut Nom avec des valeurs : Retour, Menu ou Temps et leurs descendants :

      //*[@Nom='Retour' ou @Nom='Menu' ou @Nom='Temps']/descendant-or-self::*

    2. Verrouiller tous les attributs de Nom avec des valeurs : Retour, Menu ou Temps et leurs descendants

      //*[@Nom='Précédent' ou @Nom='Menu' ou @Nom='Heure']//@*

Quelques exemples externes.

Note de contexte

Les notes de contexte peuvent être importées dans les segments traduits.

Trois exemples sont présentés dans cet exemple :

<?xml version-"1.0" encoding="utf-8"?>
<root>
<element context1="Note dans l'attribut de parentElement 1 - select ../@context1">
<field context2="Note dans l'attribut 1 - select @context2" >for translation1</field>
<context3>Note dans l'élément 1 - sélectionnez ../context3</context3>
</element>

<element context1="Note dans l'attribut de parentElement 2">
<field context2="Note dans l'attribut 2">pour la traduction2</field>
<context3>Note dans l’élément 2</context3>
</element>

</root>
  • Attribut dans l'élément parent (contexte 1) : ../@context1

  • Attribut dans l'élément self (context2): @context2

  • Élément frère (contexte 3) :.../contexte3

Si vous importez Elements&Attributes: //* le contenu de la note de contexte sera également importé dans les segments source. Excluez les éléments/attributs de la note de contexte de l’importation générale dans Elements&Attributes.

Cet article vous a-t-il été utile ?

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.