Импортировать утилиты

XPath (TMS)

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

XPath расшифровывается как язык (язык) путей XML. Его можно использовать для навигации по элементам и атрибуты в XML документ. Если вы новичок в XPATH, пожалуйста, сначала ознакомьтесь с руководством по XPath и изучите официальную документацию по XPATH.

Чат-боты искусственного интеллекта (ИИ) могут быть очень эффективными в генерации и подтверждении Xpath.

Поддерживается подмножество XPath 1.0 со следующими ограничениями:

  • Ось в этап

    • Поддерживается

      ancestor, ancestor-or-self, атрибуты, дочерний элемент, descendant, descendant-or-self

    • Не поддерживается:

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

  • Предикат

    • Поддерживается

      условия для текущего узла или узлов-предков и их свойств (атрибуты, пространства имен)

    • Не поддерживается (например):

      номер позиции, ось child::, descendant, descendant-or-self, following::, preceding::, following-sibling::, preceding-sibling::, функция last()

Основные правила

  • Использовать / и // в путях

  • Использовать одинарные кавычки ' ' в именах

  • Использовать вертикальную черту | для объединения запросов

  • Имена чувствительны к регистру: <Body> отличается от <body>

Примеры

Пример XPath 1 и Пример XPath 2 (с пространством имен) — это примеры файлов для следующего:

  1. Импортировать все элементы и все атрибуты

    //* | //@*

  2. Импортировать все элементы и значение атрибуты1

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

    //* | //@attribute1

  3. Импортировать все потомки дочерний элемент элементов

    //Child//*

  4. Импортировать элемент lis и его потомки, только если атрибуты translate='true' 

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

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

  5. Импортировать все элементы и дочерние элементы, если атрибуты элемента — translate='true'

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

  6. Импортировать значение атрибуты Text в элементе Data

    <Data Text=\"Text for translation\">

    //data/@text

  7. Импортировать элемент <mT:translation> и его дочерние элементы, исключить элемент <mT:ignore>

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

  8. Исключить все элементы с атрибуты translate='false'

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

  9. Исключить элементы 'lis' с атрибуты translate='false'

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

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

  10. Исключить элементы 'lis' с атрибуты translate='false' и их потомков

    (<lis translate=\"false\"><p>Не переводить)

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

  11. Исключить все элементы, содержащие 'link'

    (<menu1link><tmenu41link>)

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

  12. Исключить все элементы, если они или их родительский элемент имеют атрибуты 'lis', содержащие 'link'

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

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

  13. Импортировать элементы PT, если их родительский элемент LANG имеет атрибуты 'updated' с 2015 годом

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

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

  14. Импортировать элементы 'Description' и 'Name' только в том случае, если они не являются дочерними элементами элементов 'Definitions' или 'Types'

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

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

  15. XML с пространством имен

    <root xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"><Child><Text>перевести это</Text></Child>

    • импортировать все элементы в <Child>:

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

    • импортировать только элементы <Text> в <дочерний элемент>:

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

    • импортировать все элементы под элементом <CONTRACT>, если атрибуты <CATEGORY> в <CONTRACT> имеет значение <ORIGINAL>

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

  16. XML с пространством имен и атрибуты <root> xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"<дочерний элемент translate='1'>translate this</дочерний элемент>

    • импортировать элемент <дочерний элемент>, если атрибуты translate равен 1: //*[local-name()=\"дочерний элемент\"][@*[local-name()='translate']='1']

    • импортировать все элементы с атрибуты translate=true: //*[@*[local-name()='translate']='true']

  17. XML с пространством имен. импортировать элемент перевод из элемента tu, но не тогда, когда атрибуты Идентификатор содержит 'img' или 'extra':

    1. Пример файла:

      <tu id=\"pages|контент|extra\"><ori xml:lang=\"en\">Course one</ori><перевод xml:lang=\"lang\">Course one</перевод></tu>

    2. Пример XPATH:

      //*[local-name()='tu' and not(contains(@Идентификатор,'img') or contains(@Идентификатор,'extra'))]/*[local-name()='перевод']

  18. импортировать все элементы, кроме <комментировать> и <lis>, если только <lis translate=\"true\"> и их потомки:

    //*[count(ancestor-or-self::node()[(name()='lis' and (not(@translate='true')) ) or name()='комментировать'])=0]

  19. импортировать все элементы, кроме <комментировать> и кроме элементов с атрибуты <... атрибуты2=\"Do not translate\"> и их потомков:

    //*[count(ancestor-or-self::node()[(@атрибуты2='Do not translate') or name()='комментировать'])=0]

  20. импортировать значения атрибуты varName и glossName, но только если их предки имеют атрибуты атрибуты1='импортировать' или атрибуты1='Редактировать':

    //*[(self::node()[@атрибуты1='импортировать' or @атрибуты1='Редактировать'])]//@*[local-name()='varName' or local-name()='glossName']

  21. импортировать все элементы и атрибуты, кроме элементов с атрибуты Name= Back, Menu или 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'])]

    В этом случае может быть лучше импортировать все и заблокировать атрибуты, не требующиеся для импорта. Как только сегменты будут заблокированы, скопируйте оригинал в перевод в редакторе, чтобы оригинал был перенесен в перевод.

    1. Заблокируйте все элементы с атрибуты Name со значениями: Back, Menu или Time и их потомков:

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

    2. Заблокируйте все атрибуты Name со значениями: Back, Menu или Time и их потомков

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

Некоторые внешние examples.

Контекстное примечание

Контекстные примечания можно импортировать в переведенные сегменты.

В этом примере есть три примера:

<?xml version-\"1.0\" encoding=\"utf-8\"?>
<root>
<element context1=\"Note in attribute of parentElement 1 - Выбрать ../@context1\">
<field context2=\"Note in attribute 1 - Выбрать @context2\" >for translation1</field>
<context3>Note in element 1 - Выбрать ../context3</context3>
</element>

<element context1=\"Note in attribute of parentElement 2\">
<field context2=\"Note in attribute 2\">for translation2</field>
<context3>Note in element 2</context3>
</element>

</root>
  • Атрибуты в родительский элемент (контекстное примечание 1): ../@context1

  • Атрибуты в собственном элементе (контекстное примечание 2): @context2

  • Родственный элемент (контекстное примечание 3): ../context3

При импортировании Elements&Attributes: //* контент контекстное примечание также будет импортирован в оригинал сегменты. Исключить элементы/атрибуты контекстное примечание из общего импорта в Elements&Attributes.

Была ли эта статья полезной?

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.