Colecciones XPath
Las colecciones devueltas por las consultas XPath conservan el orden de documento, la jerarquía y la identidad hasta el extremo en el que éstas estén definidas. Es decir, una colección de elementos se devuelve en orden de documento sin elementos repetidos. Puesto que los atributos por definición no están ordenados, no hay un orden implícito en los atributos devueltos para un elemento específico.
La colección de todos los elementos con un cierto nombre de etiqueta se expresa mediante el mismo nombre de etiqueta. Esto puede calificarse mostrando que los elementos se seleccionan a partir del contexto actual mediante un punto y una barra diagonal (./
), pero el contexto actual se utiliza de forma predeterminada y no debe tenerse en cuenta explícitamente.
Ejemplos
Expresión | Hace referencia a |
---|---|
|
Todos los elementos |
|
Todos los elementos |
Indizar en una colección
Las expresiones XPath facilitan la consulta de un nodo específico dentro de un conjunto de nodos. Simplemente contenga el ordinal de índice entre corchetes. El ordinal se basa en 1 (el primer elemento es número 1).
Los caracteres entre corchetes ([]
) tienen una prioridad más alta que los caracteres de barra diagonal (/
y //
). Para más información consulte Operadores y caracteres especiales
Ejemplos
Expresión | Hace referencia a |
---|---|
|
El primer elemento |
|
El tercer elemento |
Tenga en cuenta que los índices conciernen el conjunto filtrado. Tenga en cuenta, por ejemplo, los siguientes datos.
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
La tabla siguiente muestra cómo seleccionar elementos específicos <x>
y <y>
.
Expresión | Hace referencia a |
---|---|
|
El primer |
|
El primer |
|
El primer |
Los ejemplos de arriba son referencias simples a colecciones XPath que utilizan valores predeterminados implícitos, tales como el eje child::
. Para este eje, la colección de nodos secundarios es indizada en orden de avance del documento.
Para otros ejes, tales como ancestor::
, utilice el nombre del eje explícitamente en la expresión XPath. Para este eje, la colección de antecesores es indizada en orden de retroceso del documento. Tenga en cuenta este ejemplo de la tabla anterior:
x/y[1]
Esta expresión es equivalente a esta:
x/child::y[1]
Ambas expresiones significan "para cada elemento <x>
, seleccione el primer elemento secundario llamado <y>
."
En el siguiente ejemplo se utiliza la misma sintaxis.
x/ancestor::y[1]
Este ejemplo se traduce en "para cada elemento <x>
, seleccione el primer elemento antecesor (en orden de retroceso del documento) llamado <y>
". La sintaxis es la misma, pero el orden está al revés.
Búsqueda del último elemento en una colección
La función last() devuelve True para el último elemento en una colección. Tenga en cuenta que last
concierne al nodo primario.
Ejemplos
Expresión | Hace referencia a |
---|---|
|
El último elemento |
|
El último elemento |
|
El último elemento |
Grupo
Se puede utilizar paréntesis para agrupar operadores de colección para ofrecer mayor claridad o donde la prioridad normal no es adecuada para expresar una operación. El grupo de operadores puede utilizarse en cualquier expresión de filtro (predicados), tales como author[(degree or award)and publication]
. También pueden utilizarse en la expresión de fase superior, como (book|magazine)
o (author/degree | book/award)
. No pueden aplicarse a expresiones de fase nivel inferior. Por ejemplo, author/(degree | award)
no es válido.
Ejemplos
Expresión | Hace referencia a |
---|---|
|
Todos los elementos |
|
Todos los elementos |