Importer des outils

XPath (TMS)

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

XPath signifie XML Path langue 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.

Les chatbots 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 en étape

    • 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 pipe | pour la fusion des demandes

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

Exemples

Les exemples XPath 1 et XPath 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 des éléments Enfant

    //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 valeur de l'attribut Text in element Data

    <Data Text="Texte à traduire">

    //data/@text

  7. Importer l’élément <TA:traduction> et ses descendants, sauf l’élément <TA:ignorer>

    //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 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 langue parent a l’attribut « mis à jour » 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 les descendants des éléments 'Définitions' ou 'Types'

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

    [(nom()='Description') ou (nom()='Nom')]

  15. XML avec espace de noms

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

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

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

    • importer uniquement les éléments <Text> 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"<Enfant traduire='1'>traduire ceci</Enfant>

    • importer l'élément <Enfant> si l'attribut traduire est 1: //*[local-name()="Enfant"][@*[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 depuis l'élément tu, mais pas lorsque l'Identifiant contient 'img' ou 'extra' :

    1. Exemple de fichier :

      <tu Identifiant="pages|contenu|extra"><ori xml:lang="fr">Cours un</ori><cible xml:lang="lang">Cours un</cible></tu>

    2. Exemple XPATH :

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

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

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

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

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

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

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

  21. Importer tous les éléments et attributs, à l ' exception des éléments portant 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 importer . Une fois les segments verrouillé, copiez la source dans la cible dans l’éditeur commande que l’original soit transféré à la traduction.

    1. Verrouillez tous les éléments portant l’attribut Nom avec des valeurs : Retour, Menu ou Temps et leurs descendants :

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

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

      //*[@Nom='Retour' 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 - sélectionner ../@context1">
<field context2="Note dans l'attribut 1 - sélectionner @context2" >pour la traduction1</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 d’importer généralement 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.