Diferencia entre revisiones de «XPath»

8 bytes añadidos ,  hace 10 meses
m
Reemplazos con Replacer: «mas»
m (Reemplazos con Replacer: «asi»)
m (Reemplazos con Replacer: «mas»)
Una expresión XPath es evaluada con respecto a un ''nodo de contexto''. Un eje especificador como 'hijo' ('child') o 'descendiente' ('descendant') especifica la dirección para navegar desde el nodo de contexto. El nodo de 'prueba' ('test') y el predicado es usado para filtrar los 'nodos' ('nodes') específicos según el eje específico: Por ejemplo, el nodo de test 'A' requiere que todos los nodos a navegar tengan la etiqueta ('label') 'A'. Se puede usar un predicado para especificar que los nodos seleccionados tiene una propiedad en específico, estas son especificadas mediante la expresión del XPath.
 
La sintaxis de XPath tiene dos formas: La ''sintaxis abreviada'', es más compacta y permite que el XPaths sea escrito y leído de forma fácil e intuitiva, en muchas casos, usa caracteres que son familiares y una forma de construirla conocida. La ''sintaxis completa'' es más extravagante, pero permite especificar masmás opciones y es más descriptiva a la hora de leerla, siempre y cuando se lea con cuidado.
 
===Sintaxis abreviada===
La notación compacta permite muchos valores predeterminados y abreviaciones para los casos masmás comunes. Dado el XML que contiene el siguiente ejemplo:
 
<syntaxhighlight lang="xml">
esta selecciona el elemento C en la dirección del 'hijo' del elemento B que es hijo del elemento A, de esta forma, se selecciona el elemento desde lo más afuera del documento XML. La sintaxis de XPath imita una URI ([[Uniform Resource Identifier]]) la cual en español significa 'Identificador de recurso uniforme' y una sintaxis de [[Ruta (informática)#Estilo Unix|ruta de archivo con estilo Unix]].
 
Las expresiones masmás complejas pueden ser construidas mediante un eje específico que no sea el eje hijo ('child') por defecto, una prueba de nodo que no tenga un nombre simple o predicados, como puede ser escribir en un paréntesis recto después de cualquier paso. Por ejemplo, la expresión:
* <code>A//B/*[1]</code>
selecciona el primer hijo ('<code>*[1]</code>'), cualquiera sea su nombre, de cada elemento B y sus hijos. Este símbolo ('<code>//</code>') hace referencia a que se tomara una descendencia del elemento A, esto es un hijo del nodo del contexto actual (La expresión no comienza con un '<code>/</code>'). Note que el predicado <code>[1]</code> se une masmás firmemente que el operador <code>/</code>. Para seleccionar el primer nodo seleccionado mediante la expresión <code>A//B/*</code>, escriba <code>(A//B/*)[1]</code>. Tenga en cuenta, que el valor del índice en el predicado del XPath (técnicamente, 'próxima posición' del conjunto de nodos del XPath ) empieza en 1, no en 0 como es común en lenguajes como Javascript, C y Java.
 
===Sintaxis expandida===
Aquí, en cada paso del XPath, el '''eje''' (ejemplo: <code>child</code> o <code>descendant-or-self</code>) es especificado explícitamente, seguido por <code>::</code> y entonces la '''prueba del nodo''', tal como <code>A</code> o <code>node()</code> en los ejemplos anteriores.
 
En este mismo, pero masmás corto:
 
<code>A//B/*[position()=1]</code>
 
===Prueba de Nodo===
La prueba de nodo puede consistir en un nombre de nodo específico o una expresión masmás general. En el caso de un documento XML en el cual el prefijo del namespace (Espacio de nombres) <code>gs</code> ha sido definido, <code>//gs:enquiry</code> buscara todo los elementos <code>enquiry</code> en ese namespace, y <code>//gs:*</code> encontrar todos los elementos, Sin importar el nombre local en este namespace.
 
Otros formatos de pruebas de nodo son:
El otro caso, el valor del predicado es automáticamente convertido a un valor booleano. Cuando el predicado se evalúa como un conjunto de nodos, el resultado es true cuando el conjunto de nodos es no vacio. Por lo tanto <code>p[(SimboloArroba)x]</code> selecciona esos <code>p</code> selecciona los elementos que tienen un atributo <code>x</code>.
 
Un ejemplo masmás complejo es la expresión: <code>a[/html/(SimboloArroba)lang='en'][(SimboloArroba)href='help.php'][1]/(SimboloArroba)target</code> selecciona el valor del atributo <code>target</code> del primer elemento <code>a</code> entre los hijos del nodo de contexto que tienen el atributo <code>href</code> con el valor <code>help.php</code>, siempre que el elemento <code>html</code> superior tenga el atributo <code>lang</code> con el valor <code>en</code>. La referencia a un atributo del elemento de nivel superior en el primer predicado no afecta ni al contexto de otros predicados ni al del paso de ubicación en sí.
 
El orden de los predicados es significativo si los predicados prueban la posición de un nodo. Cada predicado toma un conjunto de nodos y retorna (potencialmente) un conjunto masmás chicos. Entonces <code>a[1][(SimboloArroba)href='help.php']</code> encontrara coincidencias solo si el primer hijo <code>a</code> del nodo de contexto satisface la condición <code>(SimboloArroba)href='help.php'</code>, mientras <code>a[(SimboloArroba)href='help.php'][1]</code> encontrara el primer hijo <code>a</code> que satisface la condición.
 
===Funciones y operadores===