Utilitários de importação

XPath (TMS)

O conteúdo de toda a Central de Ajuda é traduzido automaticamente de inglês pelo Phrase Language AI.

XPath significa XML Path Language. Ele pode ser usar para navegar por elementos e atributos em um documento XML. Se for novo em XPATH, consulte primeiro o Tutorial de XPath e estude a documentação oficial do XPATH.

Chatbots de IA podem ser muito eficazes na geração e verificação de Xpath.

Um subconjunto do XPath 1.0 é compatível com as seguintes limitações:

  • Eixo na etapa

    • Aceita:

      ancestor, ancestor-or-self, attribute, secundário, descendant, descendant-or-self

    • Não compatível com:

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

  • Predicado

    • Aceita:

      condições no nó atual ou nós ancestrais e suas propriedades (atributos, namespaces)

    • Não compatível com (por exemplo):

      número de posição, eixo secundário::, descendant, descendant-or-self, following::, preceding::, following-sibling::, preceding-sibling::, função last()

Regras básicas

  • Usar / e // em caminhos

  • Usar aspas simples ' ' em nomes

  • Usar uma barra vertical | para unir as solicitações

  • Nomes diferenciam maiúsculas de minúsculas: <Body> é diferente de <body>

Exemplos

Exemplo de XPath 1 e Exemplo de XPath 2 (com namespace) são arquivos de exemplo para o seguinte:

  1. Importar todos os elementos e todos os atributos

    //* | //@*

  2. Importar todos os elementos e o valor do atributo1

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

    //* | //@attribute1

  3. Importar todos os descendentes de elementos secundário

    //Child//*

  4. Importar um elemento lis e seus descendentes apenas se o atributo translate='true' 

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

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

  5. Importar todos os elementos e descendentes se o atributo do elemento for translate='true'

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

  6. Importar valor do atributo Text no elemento Data

    <Data Text=\"Texto para tradução\">

    //data/@text

  7. Importar o elemento <tradução automática:tradução automática> e seus descendentes, exceto o elemento <tradução automática:ignorar>

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

  8. Excluir todos os elementos com o atributo translate='false'

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

  9. Excluir elementos 'lis' com o atributo translate='false'

    (<lis translate=\"false\">Não traduzir)

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

  10. Excluir elementos 'lis' com o atributo translate='false' e seus descendentes

    (<lis translate=\"false\"><p>Não traduzir)

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

  11. Excluir todos os elementos que contêm 'link'

    (<menu1link><tmenu41link>)

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

  12. Excluir todos os elementos se eles ou seu principal tiverem um atributo 'lis' contendo 'link'

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

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

  13. Importar elementos PT se seu principal LANG tiver o atributo 'updated' com o ano 2015

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

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

  14. Importar elementos 'Description' e 'Name' apenas se eles não forem descendentes de elementos 'Definitions' ou 'Types'

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

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

  15. XML com namespace

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

    • importar todos os elementos em <secundário>:

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

    • importar apenas elementos <Text> em <secundário>:

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

    • importar todos os elementos sob o elemento <CONTRACT>, se o atributo <CATEGORY> em <CONTRACT> tiver o valor <ORIGINAL>

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

  16. XML com namespace e atributos <root> xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"<secundário translate='1'>traduza isto</secundário>

    • importar elemento <secundário> se o atributo translate for 1: //*[local-name()=\"secundário\"][@*[local-name()='translate']='1']

    • importar todos os elementos com o atributo translate=true: //*[@*[local-name()='translate']='true']

  17. XML com namespace. importar o elemento tradução do elemento tu, mas não quando o atributo ID contém 'img' ou 'extra':

    1. Exemplo de arquivo:

      <tu id=\"pages|content|extra\"><ori xml:lang=\"en\">Course one</ori><target xml:lang=\"lang\">Course one</target></tu>

    2. Exemplo de XPATH:

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

  18. importar todos os elementos exceto <comment> e <lis> a menos que <lis translate=\"true\"> e seus descendentes:

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

  19. importar todos os elementos exceto <comment> e exceto elementos com o atributo <... attribute2=\"Do not translate\"> e seus descendentes:

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

  20. importar valores dos atributos varName e glossName mas apenas se seus ancestrais tiverem o atributo attribute1='translate' ou attribute1='edit':

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

  21. importar todos os elementos e atributos exceto elementos com o atributo 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'])]

    Neste caso, pode ser melhor importar tudo e bloquear os atributos não necessários para importar. Uma vez que os segmentos estejam bloqueado, copie o texto original para a tradução no editor para que o original seja transferido para o pedido de tradução.

    1. bloquear todos os elementos com o atributo Name com valores: Back, Menu ou Time e seus descendentes:

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

    2. bloquear todos os atributos de Name com valores: Back, Menu ou Time e seus descendentes

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

Alguns exemplos externos.

Nota de contexto

Notas de contexto podem ser importadas para segmentos traduzidos.

Existem três exemplos nesta amostra:

<?xml version-"1.0" encoding="utf-8"?>
<root>
<element context1=\"Nota de contexto no atributo do elemento principal 1 - Selecionar ../@context1\">
<field context2=\"Nota de contexto no atributo 1 - Selecionar @context2\" >para tradução1</field>
<context3>Nota de contexto no elemento 1 - Selecionar ../context3</context3>
</element>

<element context1=\"Nota de contexto no atributo do elemento principal 2\">
<field context2=\"Nota de contexto no atributo 2\">para tradução2</field>
<context3>Nota de contexto no elemento 2</context3>
</element>

</root>
  • Atributo no elemento principal (nota de contexto 1): ../@context1

  • Atributo no próprio elemento (nota de contexto 2): @context2

  • Elemento irmão (nota de contexto 3): ../context3

Ao importar Elementos&Atributos: //*, o conteúdo da nota de contexto também será importado para os segmentos de texto original. Excluir os elementos/atributos de nota de contexto da importação geral em Elementos&Atributos.

Esse artigo foi útil?

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.