Compartir a través de


Comparaciones

Para comparar dos objetos en XPath, utilice el signo = para probar la igualdad, o utilice != para probar la desigualdad.

Para una operación de comparación, se deberán suministrar exactamente dos operandos. Las comparaciones se realizan evaluando cada operando y convirtiéndolos según sea necesario, de forma que sean del mismo tipo. Esto se lleva a cabo de acuerdo con el proceso descrito más abajo, en "Orden de prioridad para comparaciones".

Todos los elementos y atributos son cadenas, pero se convierten automáticamente en valores enteros para comparaciones numéricas. Los valores numéricos literales se convierten en tipos long o double durante las operaciones de comparación, tal como se muestra en la siguiente tabla.

Para obtener más información sobre < y otros operadores de comparación binaria, vea "Operadores de comparación binaria" más abajo.

Tipo de literal Comparación Ejemplo

Cadena

text(lvalue) op text(rvalue)

a < GGG

Entero

(long) lvalue op (long) rvalue

a < 3

Real

(double) lvalue op (double) rvalue

a < 3.1

Las comillas sencillas o dobles pueden utilizarse para delimitadores de cadena en expresiones. Facilita construir y pasar modelos desde lenguajes de scripts.

Para obtener más información sobre cómo se realizan comparaciones mediante XPath, vea la sección 3.4 ("Booleanos") del Lenguaje de rutas XML (XPath) Versión 1.0 (W3C recomendación 16 noviembre 1999) en www.w3.org/TR/xpath.

Ejemplos

Expresión Hace referencia a

author[last-name = "Bob"]

Todos los elementos <author> que contienen al menos un elemento <last-name> con el valor Bob.

author[last-name[1] = "Bob"]

Todos los elementos <author> cuyo primer elemento secundario <last-name> tiene el valor Bob.

author/degree[@from != "Harvard"]

Todos los elementos <author> que contienen elementos <degree> con un atributo from que no es igual a "Harvard".

author[last-name = /editor/last-name]

Todos los elementos <author> que contienen un elemento <last-name> que es el mismo que el elemento <last-name> dentro del elemento <editor> en el elemento raíz.

author[. = "Matthew Bob"]

Todos los elementos <author> cuyo valor de cadena es Matthew Bob.

Orden de prioridad para comparaciones

Las comparaciones en relación con los tipos de datos obedecen un orden de prioridad.

  • Si al menos un operando es booleano, se convierte primero cada operando en un booleano.

  • De lo contrario, si al menos un operando es un número, se convierte primero cada operando en un número.

  • De lo contrario, si al menos un operando es una fecha, se convierte primero cada operando en una fecha.

  • De lo contrario, ambos operandos se convierten primero en cadenas.

Operadores de comparación binaria

Un conjunto de operadores de comparación binaria compara números y devuelve resultados booleanos. Los operadores &lt;, &lt;=, &gt; y &gt;= se utilizan para menor que, menor que o igual que, mayor que y mayor que o igual que, respectivamente. Las comillas sencillas o dobles pueden utilizarse para delimitadores de cadena en expresiones. Esto facilita construir y pasar modelos en lenguajes de scripts.

Tenga en cuenta que estos operadores de comparación funcionan solamente con números. Puede comparar cadenas para comprobar la igualdad, pero si desea comparar cadenas para determinar el criterio de ordenación, debe usar las Funciones de extensión de XPath de Microsoft.

Ejemplos

Expresión Hace referencia a

author[last-name = "Bob" and price &gt; 50]

Todos los elementos <author> que contienen un elemento <last-name> con el valor Bob y un elemento <price> con un valor mayor que 50.

degree[@from != "Harvard"]

Todos los elementos <degree> con un atributo from que no es igual que "Harvard".

book[position() &lt;= 3]

Los primeros tres elementos <book> (1, 2, 3) en el archivo XML.

Ejemplo

Archivo XML (test.xml)

Archivo XSLT (test.xsl)

La siguiente hoja de estilos XSLT selecciona todos los elementos <x> que son los primeros de sus nodos relacionados en el orden del documento.

Resultado con formato

La transformación aplicada al archivo XML de arriba produce el siguiente resultado:

<x a="1">
  <x a="2" b="B">
     <x>
        <y>y31</y>
        <y>y32</y>
     </x>
   </x>
</x>
<x a="2" b="B">
   <x>
      <y>y31</y>
      <y>y32</y>
   </x>
</x>
<x>
   <y>y31</y>
   <y>y32</y>
</x>

Vea también

Referencia

Ejemplo de XPath

Conceptos

Archivo de muestra XML para sintaxis XPath (inventory.xml)