Importar utilidades

XPath (TMS)

El contenido se traduce automáticamente del inglés por Phrase Language AI.

XPath significa idioma XML Path. Se puede utilizar para navegar a través de elementos y atributos en un documento XML. Si eres nuevo en XPATH, consulta primero el Tutorial XPath y estudia la documentación XPATH oficial.

Un subconjunto de XPath 1.0 es compatible con las siguientes limitaciones:

  • Eje al paso

    • Compatible

      antepasado, antepasado-o-mismo, atributo, elemento secundario, descendiente, descendiente-o-mismo

    • No soportado

      espacio de nombres siguiente, precedente, siguiente, precedente-hermana

  • Predicado

    • Compatible

      condiciones en los nodos actuales o nodos antecesores y sus propiedades (atributos, espacios de nombres)

    • No compatible (por ejemplo)

      número de posición, elemento secundario del eje::, descendiente, descendiente-o-mismo, siguiente::, precedente::, siguiente-hermano::, precedente-hermano::, función last()

Reglas básicas

  • Usar / y // en rutas

  • Usar comillas simples ' ' en los nombres

  • Usar una tubería | para unir las solicitudes

  • Los nombres son sensibles a las mayúsculas y minúsculas: <Body> es diferente de <body>

Ejemplos

XPath Ejemplo 1 y XPath Ejemplo 2 (con espacio de nombres) son archivos de ejemplo para los siguientes:

  1. Importar todos los elementos y todos los atributos

    //* | //@*

  2. Importar todos los elementos y el valor del atributo1

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

    //* | //@attribute1

  3. Importar todos los descendientes de elementos secundarios

    //Child//*

  4. Importar un elemento lis y sus descendientes sólo si el atributo translate='true' 

    (<lis translate="true">traducir esto</lis><lis translate="false">no traducir esto</lis>)

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

  5. Importar todos los elementos y descendientes si el atributo del elemento es traducir='true'

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

  6. Importar valor del atributo Texto en el elemento Datos

    <Data Text="Texto para traducción">

    //data/@text

  7. Importar el elemento <MT:traducción> y sus descendientes, excepto el elemento <MT:ignorar>

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

  8. Excluir todos los elementos con el atributo translate='false'

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

  9. Excluir elementos 'lis' con el atributo translate='false'

    (<lis translate="false">No traducir)

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

  10. Excluir elementos 'lis' con el atributo translate='false' y sus descendientes

    (<lis translate="false"><p>No traducir)

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

  11. Excluir todos los elementos que contengan 'enlace'

    (<menu1link><tmenu41link>)

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

  12. Excluir todos los elementos si ellos o su antepasado tienen un atributo 'lis' que contenga 'enlace'

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

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

  13. Importar elementos PT si su LANG elemento raíz tiene el atributo 'actualizado' con el año 2015

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

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

  14. Importar elementos 'Descripción' y 'Nombre' sólo si no son descendientes de elementos 'Definiciones' o 'Tipos'

    ://*[not(ancestro-o-mismo::*[(nombre()='Definiciones') o (nombre()='Tipos')])]/*

    [(name()='Descripción') o (name()='Nombre')]

  15. XML con espacio de nombres

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

    • importar todos los elementos en <elementos secundarios>:

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

    • importar sólo elementos <Texto> en <elementos secundarios>:

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

    • importar todos los elementos bajo el elemento <CONTRACT>, si el atributo <CATEGORY> en <CONTRACT> tiene el valor <ORIGINAL>

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

  16. XML con espacio de nombres y atributos <root> xmlns:xhtml="http://www.w3.org/1999/xhtml"<elemento secundario traducir='1'>traducir este</elemento secundario>

    • importar elemento <elemento secundario> si la traducción del atributo es 1: //*[nombre-local()="elemento secundario"][@*[nombre-local()='traducir']='1']

    • importar todos los elementos con el atributo translate=true: //*[@*[local-name()='traducir']='true']

  17. XML con espacio de nombres. Importar el elemento meta del elemento tu, pero no cuando la ID del atributo contiene 'img' o 'extra':

    1. Ejemplo de archivo:

      <tu ID="pages|contenido|extra"><ori xml:lang="en">Curso uno</ori><meta xml:lang="lang">Curso uno</meta></tu>

    2. Ejemplo XPATH:

      //*[local-name()='tu' y not(contains(@id,'img') o contain(@id,'extra'))]/*[local-name()='meta']

  18. Importar todos los elementos excepto <comentario> y <lis> a menos que <lis translate="true"> y sus descendientes:

    //*[count(ancestro-o-mismo::node()[(nombre()='lis' y (not(@traducir='verdadero')) ) o nombre()='comentario'])=0]

  19. Importar todos los elementos excepto <comentario> y excepto los elementos con atributo <... atributo2="No traducir"> y sus descendientes:

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

  20. Importar valores de atributos varName y glossName, pero solo si sus ancestros tienen atributo atributo1='traducir' o atributo1='editar':

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

  21. Importar todos los elementos y atributos, excepto los elementos cuya propiedad sea Nombre= Volver, Menú o Hora:

    //*[not(ancestro-o-mismo::node()[@Nombre='Volver' o @Nombre='Menú' o @Nombre='Hora'])] | //@*[not(ancestro-o-mismo::node()[@Nombre='Volver' o @Nombre='Menú' o @Nombre='Hora'])]

    En este caso, puede ser mejor importar todos y bloquear los atributos no necesarios para importar. Una vez bloqueados los segmentos, copie fuente a meta en el editor con orden de transferir el original a traducción.

    1. Bloquear todos los elementos con el Nombre de atributo con valores: Volver, Menú o Tiempo y sus descendientes:

      //*[@Nombre='Volver' o @Nombre='Menú' o @Nombre='Hora']/descendiente-o-mismo::*

    2. Bloquear todos los atributos de Nombre con valores: Volver, menú o tiempo y sus descendientes

      //*[@Nombre='Volver' o @Nombre='Menú' o @Nombre='Hora']//@*

Algunos ejemplos externos.

Nota de contexto

Las notas de contexto se pueden importar a segmentos traducidos.

Hay tres ejemplos en esta muestra:

<?xml version-"1.0" encoding="utf-8"?>
<root>
<contexto del elemento1="Nota en la propiedad del elemento raíz 1 - seleccionar ../@contexto1">
<field context2="Nota en el atributo 1 – selecciona @context2" >para traducción1</field>
<context3>Nota en el elemento 1 – seleccione ../context3</context3>
</element>

<contexto del elemento1="Nota en la propiedad del elemento raíz2">
<field context2="Nota en el atributo 2">para translation2</field>
<context3>Nota en el elemento 2</context3>
</element>

</root>
  • Atributo en elemento raíz (contexto 1): ../@contexto1

  • Atributo en elemento propio (contexto2): @contexto2

  • Elemento hermano (contexto 3): ../contexto3

Si se importan Elementos y atributos: //* el contenido de la nota de contexto también se importará a los segmentos fuente. Excluir los elementos/atributos de la nota de contexto de importarlos en general en Elementos&Atributos.

¿Fue útil este artículo?

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.