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

XPath (TMS)

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

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

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

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

  • Ось на этапе

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

      предок, предок-или-я, атрибут, дочерний элемент, потомок, потомок-или-я

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

      следующее, предшествующее, следующее за другим, предшествующее, пространство имен

  • Основной

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

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

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

      номер позиции, дочерний элемент оси::, потомок, потомок-или-я, следующий::, предшествующий::, следующий-родственный::, предшествующий-родственный:::, функция последний()

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

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

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

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

  • Имена зависят от регистра: <тело> отличается от <тела>

Примеры

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

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

    //* | //@*

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

    (<elem1 attribute1="translate" at2="Не переводить"/>)

    //* | //@attribute1

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

    //Ребенок//*

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

    (<lis translation="true">translate this</lis><lis translation="false">не переводите this</lis>)

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

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

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

  6. Импортировать значение атрибута Текст в элементе Данные

    <Текст данных="Текст для перевода">

    //data/@text

  7. Импортировать элемент машинного перевода (<<МТ):перевод> и его потомков, за исключением элемента <<машинного перевода (мТ): пропустить>

    //машинный перевод (МТ):перевод/потомок-или-себя::*[не(предок-или-себя::машинный перевод (МТ):пропустить)]

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

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

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

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

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

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

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

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

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

    (<menu1link><tmenu41link>)

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

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

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

    //*[not(ancestor-or-self::node()[содержит(@lis, 'link')])]

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

    (<LANG обновлен="20150213T121526"><PT>'

    //LANG[содержит(@updated,'2015')]/PT

  14. Импортировать элементы «Описание» и «Имя» только в том случае, если они не являются потомками элементов «Определения» или «Типы»

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

    [(имя()='Описание') или (имя()='Имя')]

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

    <root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Дочерний элемент><Text>перевести этот</Text></Дочерний элемент>

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

      //*[ local-name()='Дочерний элемент']//*

    • импортировать только элементы <Текст> в <Дочерних элементах>:

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

    • импортировать все элементы в рамках элемента <CONTRACT>, если атрибут <КАТЕГОРИЯ> в <CONTRACT> имеет значение <ORIGINAL>

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

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

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

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

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

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

      <tu Идентификатор="страницы|контент|extra"><ori xml:lang="en">Курс один</i><перевод xml:lang="lang">Курс один</перевод></tu>

    2. Пример XPATH:

      //*[local-name()='tu', а не(содержит(@id,'img') или содержит(@id,'extra'))]/*[local-name()='перевод']

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

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

  19. Импортировать все элементы, кроме <комментировать> и за исключением элементов с атрибутом <... attribute2="Не переводить">, и их потомков:

    //*[count(ancestor-or-self::node()[(@attribute2='Не переводить')) или name()='comment'])=0]

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

    //*[(сам::node()[@attribute1='translate' или @attribute1='edit'])]//@*[local-name()='varName' или local-name()='glossName']

  21. Импортировать все элементы и атрибуты, кроме элементов с атрибутом Name= Back, Menu или Time:

    //*[not(ancestor-or-self::node()[@Name='Back' или @Name='Menu' или @Name='Time'])] | //@*[not(ancestor-or-self::node()[@Name='Back' или @Name='Menu' или @Name='Time'])]

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

    1. Заблокировать все элементы с Именем атрибута со значениями: Назад, в Меню или во Время и их потомки:

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

    2. Блокировать все атрибуты Имени со значениями: Назад, в Меню или во Время и их потомки

      //*[@Name='Back' или @Name='Menu' или @Name='Time']/@*

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

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

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

В этом образце три примера:

<?xml версия-"1.0" кодировка="utf-8"?>
<root>
<element context1="Примечание в атрибуте родительскогоЭлемента 1 - выберите ../@context1">
<field context2="Отметьте в атрибуте 1 - выберите @context2" >для перевода1</field>
<context3>Примечание в элементе 1 - выберите ../context3</context3>
</element>

<element context1="Примечание в атрибуте родительскогоЭлемента 2">
<field context2="Примечание в атрибуте 2">для перевода2</поле>
<context3>Примечание в элементе 2</context3>
</element>

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

  • Атрибут в элементе self (context2): @context2

  • Братский элемент (контекст 3): ../context3

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

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

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.