Import nástrojů

XPath (TMS)

Obsah je strojově přeložen z angličtiny s použitím Phrase Language AI.

XPath je zkratka pro XML Path jazyk. Lze jej použít k navigaci mezi elementy a atributy v XML dokumentu. Pokud s XPATH začínáte, nejprve si prosím projděte XPath tutoriál a prostudujte si oficiální XPATH dokumentaci.

Chatboti umělé inteligence mohou být při generování a ověřování Xpath velmi efektivní.

Podmnožina XPath 1.0 je podporována s následujícími omezeními:

  • Osa ve fázi

    • Podporováno

      ancestor, ancestor-or-self, attribute, vedlejší, descendant, descendant-or-self

    • Nepodporováno

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

  • Predikát

    • Podporováno

      podmínky pro aktuální uzel nebo vedlejší uzly a jejich vlastnosti (atributy, jmenné prostory)

    • Nepodporováno (například)

      pořadové číslo, osa vedlejší::, descendant, descendant-or-self, following::, preceding::, following-sibling::, preceding-sibling::, funkce last()

Základní pravidla

  • Použít / a // v cestách

  • Použít jednoduché uvozovky ' ' v názvech

  • Použít svislítko | pro spojení požadavků

  • Názvy rozlišují velká a malá písmena: <Body> je odlišné od <body>

Příklady

Příklad XPath 1 a Příklad XPath 2 (s oborem názvů) jsou příkladové soubory pro následující:

  1. import všech elementů a všech atributů

    //* | //@*

  2. import všech elementů a hodnoty atributu attribute1

    (<elem1 attribute1=\"translate\" attribute2=\"Do not translate\"/>)

    //* | //@attribute1

  3. import všech vedlejších elementů elementů Child

    //Child//*

  4. import elementu lis a jeho vedlejších elementů pouze tehdy, pokud je atribut translate='true' 

    (<lis translate=\"true\">translate this</lis><lis translate=\"false\">do not translate this</lis>)

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

  5. import všech elementů a vedlejších elementů, pokud je atribut elementu translate='true'

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

  6. import hodnoty atributu Text v elementu Data

    <Data Text="Text for translation">

    //data/@text

  7. import elementu <mT:translation> a jeho vedlejších elementů, kromě elementu <mT:ignore>

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

  8. vyloučit všechny elementy s atributem translate='false'

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

  9. vyloučit elementy 'lis' s atributem translate='false'

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

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

  10. vyloučit elementy 'lis' s atributem translate='false' a jejich vedlejší elementy

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

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

  11. vyloučit všechny elementy obsahující 'link'

    (<menu1link><tmenu41link>)

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

  12. vyloučit všechny elementy, pokud ony nebo jejich předek mají atribut 'lis' obsahující 'link'

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

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

  13. Import elementy PT, pokud jejich hlavní LANG má atribut 'updated' s rokem 2015

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

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

  14. Import elementy 'Description' a 'Name' pouze pokud nejsou vedlejší elementy 'Definitions' nebo 'Types'

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

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

  15. XML s oborovým názvem

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

    • import všechny elementy v <Child>:

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

    • import pouze elementy <Text> v <Child>:

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

    • import všechny elementy pod elementem <CONTRACT>, pokud atribut <CATEGORY> v <CONTRACT> má hodnotu <ORIGINAL>

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

  16. XML s oborovým názvem a atributy <root> xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"<Child translate='1'>přeložte toto</Child>

    • import element <Child> pokud je atribut translate 1: //*[local-name()=\"Child\"][@*[local-name()='translate']='1']

    • import všechny elementy s atributem translate=true: //*[@*[local-name()='translate']='true']

  17. XML s oborovým názvem. Import element cíl z elementu tu, ale ne pokud atribut ID obsahuje 'img' nebo 'extra':

    1. Příklad souboru:

      <tu id=\"pages|obsah|extra\"><ori xml:lang=\"en\">Course one</ori><cíl xml:lang=\"lang\">Course one</cíl></tu>

    2. Příklad XPATH:

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

  18. importovat všechny elementy kromě <komentář> a <lis>, pokud <lis translate=\"true\"> a jejich potomci:

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

  19. importovat všechny elementy kromě <komentář> a kromě elementů s atributem <... attribute2=\"Do not translate\"> a jejich potomků:

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

  20. importovat hodnoty atributů varName a glossName, ale pouze pokud jejich předci mají atribut attribute1='translate' nebo attribute1='Upravit':

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

  21. importovat všechny elementy a atributy kromě elementů s atributem Name= Back, Menu nebo 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'])]

    V tomto případě může být lepší importovat vše a zamknout atributy, které nejsou pro import vyžadovány. Jakmile jsou segmenty zamknuto, zkopírujte zdroj do cíle v editoru, abyste měli původní text přenesený do překladu.

    1. Zamknout všechny elementy s atributem Name s hodnotami: Back, Menu nebo Time a jejich potomky:

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

    2. Zamknout všechny atributy Name s hodnotami: Back, Menu nebo Time a jejich potomky

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

Některé externí příklady.

Kontextová poznámka

Kontextové poznámky lze importovat do přeložených segmentů.

V této ukázce jsou tři příklady:

<?xml version-"1.0" encoding="utf-8"?>
<root>
<element context1=\"Poznámka v atributu hlavní element 1 - Vybrat ../@context1\">
<field context2=\"Poznámka v atributu 1 - Vybrat @context2\" >pro překlad1</field>
<context3>Poznámka v elementu 1 - Vybrat ../context3</context3>
</element>

<element context1=\"Poznámka v atributu hlavní element 2\">
<field context2=\"Poznámka v atributu 2\">pro překlad2</field>
<context3>Poznámka v elementu 2</context3>
</element>

</root>
  • Atribut v hlavní element (kontextová poznámka 1): ../@context1

  • Atribut v samotném elementu (kontextová poznámka 2): @context2

  • Sourozenecký element (kontextová poznámka 3): ../context3

Pokud provedete import Elements&Attributes: //*, obsah kontextová poznámka bude importován také do zdroj segmentů. Vyloučit elementy/atributy kontextová poznámka z obecného import v Elements&Attributes.

Byl pro vás tento článek užitečný?

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.