Importer des outils

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 dans XPATH, veuillez d'abord consulter le tutoriel XPath et étudier la documentation officielle XPATH.

Les chatbots utilisant l'IA peuvent être très efficaces pour générer et vérifier Xpath.

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

  • Axe dans l'étape

    • Pris en charge

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

    • Non pris en charge

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

  • Prédicat

    • Pris en charge

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

    • Non pris en charge (par exemple)

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

Règles de base

  • Utilisez / et // dans les chemins

  • Utilisez des guillemets simples ' ' dans les noms

  • Utilisez un pipe | pour joindre les requêtes

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

Exemples

Exemple XPath 1 et exemple XPath 2 (avec espace de noms) sont des fichiers d'exemple pour ce qui suit :

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

    //* | //@*

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

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

    //* | //@attribute1

  3. Importer tous les descendants des éléments Enfant

    //Child//*

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

    (<lis translate="true">traduire ceci</lis><lis translate="false">ne pas traduire ceci</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

    <Données Texte="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 avec 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 s'ils ou leur ancêtre ont un attribut 'lis' contenant 'lien'

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

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

  13. Importer les éléments PT si leur parent LANG 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 des descendants des éléments 'Définitions' ou 'Types'

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

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

  15. XML avec espace de noms

    <root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Enfant><Texte>traduire ceci</Texte></Enfant>

    • 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' and @CATEGORY='ORIGINAL']//*

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

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

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

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

    1. Exemple de fichier :

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

    2. Exemple XPATH :

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

  18. Importer tous les éléments sauf <comment> et <lis> à moins que <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 <comment> et sauf les éléments avec l'attribut <... attribute2="Ne pas traduire"> et leurs descendants :

    //*[count(ancestor-or-self::node()[(@attribute2='Ne pas traduire') or name()='comment'])=0]

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

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

  21. Importer tous les éléments et attributs sauf les éléments avec l'attribut Name= Back, Menu, ou 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'])]

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

    1. Verrouillez tous les éléments avec l'attribut Name avec les valeurs : Retour, Menu, ou Temps et leurs descendants :

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

    2. Verrouillez tous les attributs de Name avec les valeurs : Retour, Menu, ou Temps et leurs descendants

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

Quelques exemples externes exemples.

Note de contexte

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

Il y a trois exemples dans cet échantillon :

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

<element context1="Note dans l'attribut de parentElement 2">
<field context2="Note dans l'attribut 2">pour 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 lui-même (contexte 2) : @context2

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

Si vous importez Elements&Attributes: //*, le contenu de la note de contexte sera également importé dans les segments source. Exclure 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.