Operaciones fijas
El lenguaje de rutas XML (XPath) es compatible con la operación de conjunto |
.
Operador de unión (|)
|
u operador de unión devuelve la unión de sus dos operandos, que deberán ser conjuntos de nodos. Por ejemplo, //author | //publisher
devuelve un conjunto de nodos que combina todos los nodos //author
y todos los nodos //publisher
. Los operadores de unión múltiples pueden encadenarse para combinar varios conjuntos de nodos. Por ejemplo, //author | //publisher | //editor | //book-seller
devuelve un conjunto de nodo que contiene todos los //author
, //publisher
, //editor
y //book-seller elements
. El operador de unión conserva el orden del documento y no devuelve duplicados.
Ejemplos
Expresión | Hace referencia a |
---|---|
|
Un conjunto de nodos que contiene elementos |
|
Un conjunto de nodos que contiene elementos |
|
Un conjunto de nodos que contiene todos los elementos |
|
Un conjunto de nodos que contiene todos los elementos |
Ejemplo
El ejemplo siguiente muestra la acción del operador de unión.
Archivo XML (test.xml)
Archivo XSLT (test.xsl)
La siguiente hoja de estilos XSLT selecciona todos los elementos <x>
cuyo atributo a
es igual a 2
, más aquellos elementos <x>
que no tienen atributos.
La transformación produce el siguiente resultado:
Prioridad
En la siguiente tabla se muestra el orden de prioridad (desde la prioridad más alta a la más baja) entre los operadores booleanos y de comparación.
Prioridad | Operadores | Descripción |
---|---|---|
1 |
|
Agrupar |
2 |
|
Filtros |
3 |
|
Operaciones de ruta |
4 |
|
Comparaciones |
5 |
|
Comparaciones |
6 |
|
Unión |
7 |
|
NOT booleano |
8 |
|
AND booleano |
9 |
|
OR booleano |
Ejemplo
El ejemplo siguiente muestra la acción de la prioridad del operador enumerado anteriormente.
Archivo XML (test.xml)
Archivo XSLT básico (test.xsl)
Se utilizará este archivo XSLT básico como punto de partida para la serie de ilustraciones que vienen a continuación.
Caso 0: Ejecución de pruebas
Se puede añadir la siguiente regla de plantilla a la hoja de estilos XSLT.
Esto producirá un documento XML idéntico al original, sin la instrucción de procesamiento <?xml version="1.0"?>
.
Los siguientes casos muestran formas diferentes de escribir esta regla de plantilla. El propósito es mostrar el orden en el que los operadores XPath se enlazan al elemento.
Caso 1: () enlaza mejor que []
La siguiente regla de plantilla selecciona el primer elemento <y>
en el orden del documento, a partir de todos los elementos <y>
en el documento origen.
El resultado es el siguiente:
<y>y31</y>
Caso 2: [] enlaza mejor que / o //
La siguiente regla de plantilla selecciona todos los elementos <y>
que están primero entre todos sus elementos relacionados.
El resultado es el siguiente:
<y>y31</y>
<y>y21</y>
<y>y11</y>
<y>y03</y>
Caso 3: and, not
La siguiente regla de plantilla selecciona todos los elementos <x>
que no tienen elementos secundarios <x>
, que tienen un elemento primario <x>
y que no tienen ningún atributo.
El resultado es un elemento único <x>
enumerado abajo con sus secundarios:
<x>
<y>y31</y>
<y>y32</y>
</x>
Caso 4: or, and, not
La siguiente regla de plantilla selecciona cada elemento <x>
que es secundario de un elemento <x>
o que no es primario del elemento <x>
y que no tiene atributos.
El resultado es un conjunto de nodos que contiene los siguientes elementos <x>
, enumerados a continuación con sus secundarios:
Caso 5: and, or, not
La siguiente regla de plantilla selecciona cada elemento <x>
que es secundario de un elemento <x>
pero no primario de un elemento <x>
o que no tiene atributos.
El resultado es un conjunto de nodos que contiene los siguientes elementos <x>
, enumerados a continuación con sus secundarios: