Compartir a través de


Introducción al uso de consultas XPath (SQLXML 4.0)

Se aplica a: SQL ServerAzure SQL Database

Una consulta XPath (Lenguaje de rutas XML) puede especificarse como parte de una dirección URL o dentro de una plantilla. El esquema de asignación determina la estructura de este fragmento resultante y los valores se recuperan de la base de datos. Este proceso es conceptualmente similar a crear vistas utilizando la instrucción CREATE VIEW y escribir consultas SQL en ellas.

Nota:

Para entender las consultas XPath en SQLXML 4.0, debe estar familiarizado con las vistas XML y otros conceptos relacionados, como las plantillas y el esquema de asignación. Para obtener más información, vea Introducción a esquemas XSD anotados (SQLXML 4.0) y el estándar XPath definido por World Wide Web Consortium (W3C).

Un documento XML consta de nodos, como un nodo de elemento, un nodo de atributo, un nodo de texto, etc. Por ejemplo, fíjese en este documento XML:

<root>  
  <Customer cid= "C1" name="Janine" city="Issaquah">  
      <Order oid="O1" date="1/20/1996" amount="3.5" />  
      <Order oid="O2" date="4/30/1997" amount="13.4">Customer was  
          very satisfied</Order>  
   </Customer>  
   <Customer cid="C2" name="Ursula" city="Oelde" >  
      <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">  
          <Urgency>Important</Urgency>  
      </Order>  
      <Order oid="O4" date="1/20/1996" amount="10000"/>  
   </Customer>  
</root>  

En este documento, <Customer> es un nodo de elemento, cid es un nodo de atributo y "Importante" es un nodo de texto.

XPath es un lenguaje de navegación de grafos que se usa para seleccionar un conjunto de nodos de un documento XML. Cada operador XPath selecciona un conjunto de nodos basándose en un conjunto de nodos seleccionado por un operador XPath anterior. Por ejemplo, dado un conjunto de <nodos customer>, XPath puede seleccionar todos los <nodos Order> con el valor del atributo date de "7/14/1999". El conjunto de nodos resultante contiene todos los pedidos con la fecha de pedido 7/14/1999.

World Wide Web Consortium (W3C) define el lenguaje XPath como un lenguaje de navegación estándar. SQLXML 4.0 implementa un subconjunto de la especificación XPath de W3C, que se encuentra en http://www.w3.org/TR/1999/PR-xpath-19991008.html.

A continuación se muestran las diferencias que existen entre la implementación XPath de W3C y la implementación SQLXML 4.0.

  • Consultas raíz

    SQLXML 4.0 no admite la consulta raíz (/). Cada consulta XPath debe comenzar en un ElementType> de nivel <superior en el esquema.

  • Informes de errores

    La especificación XPath de W3C no define ninguna condición de error. Las consultas XPath que no pueden seleccionar ningún nodo devuelven un conjunto de nodos vacío. En SQLXML 4.0, una consulta puede devolver muchos tipos de mensajes de error.

  • Orden del documento

    En SQLXML 4.0, el orden del documento no siempre viene determinado. Por lo tanto, no se implementan predicados numéricos y ejes que usan el orden del documento (como el siguiente).

    La falta de orden del documento también significa que el valor de cadena de un nodo solamente puede evaluarse cuando ese nodo se asigna a una única columna en una única fila. Un elemento con elementos secundarios o un nodo NMTOKENS o IDREFS no puede convertirse en una cadena.

    Nota:

    En algunos casos, la anotación o las claves de los campos clave de la anotación de relación pueden dar lugar a un orden de documento determinista. Sin embargo, este no es el uso principal de estas anotaciones Para obtener más información, vea Identificar columnas de clave mediante sql:key-fields (SQLXML 4.0) y Especificar relaciones mediante sql:relationship (SQLXML 4.0).

  • Tipos de datos

    SQLXML 4.0 tiene limitaciones en la implementación de los tipos de datos XPath string, number y boolean . Para obtener más información, consulte Tipos de datos XPath (SQLXML 4.0).

  • Consultas entre productos

    SQLXML 4.0 no admite consultas XPath de varios productos, como Customers[Order/@OrderDate=Order/@ShipDate]. Esta consulta selecciona todos los clientes (Customers) con algún pedido (Order) para el que la fecha de pedido (OrderDate) sea igual a la fecha de envío (ShipDate) de algún pedido (Order).

    Sin embargo, SQLXML 4.0 sí admite consultas como Customer[Order[@OrderDate=@ShippedDate]], que selecciona los clientes (Customers) con algún pedido (Order) para el que la fecha de pedido (OrderDate) sea igual a la fecha de envío (ShipDate).

  • Control de errores y seguridad

    Según el esquema y la expresión de consulta XPath que se usan, los errores de Transact-SQL podrían exponerse a los usuarios en determinadas condiciones.

En las tablas de las siguientes secciones se proporcionan detalles sobre las diferencias que existen entre la implementación de consultas XPath en SQLXML 4.0 y la especificación W3C en lo que respecta estas áreas.

Funcionalidad compatible

En la siguiente tabla se muestran las características del lenguaje XPath que se implementan en SQLXML 4.0.

Característica Elemento Vínculo a consultas de ejemplo
Ejes atributos, elementos secundarios, primarios y ejes independientes Especificar ejes en consultas XPath (SQLXML 4.0)
Predicados con valores booleanos que incluyen predicados sucesivos y anidados Especificar operadores aritméticos en consultas XPath (SQLXML 4.0)
Todos los operadores relacionales =, !=, <, <=, >, >= Especificar operadores relacionales en consultas XPath (SQLXML 4.0)
Operadores aritméticos +, -, *, div Especificar operadores aritméticos en consultas XPath (SQLXML 4.0)
Funciones de conversión explícita number(), string(), Boolean() Especificar funciones de conversión explícita en consultas XPath (SQLXML 4.0)
Operadores booleanos AND, OR Especificar operadores booleanos en consultas XPath (SQLXML 4.0)
funciones booleanas true(), false(), not() Especificar funciones booleanas en consultas XPath (SQLXML 4.0)
variables de XPath Especificar variables XPath en consultas XPath (SQLXML 4.0)

Funcionalidad incompatible

En la siguiente tabla se muestran las características del lenguaje XPath que no se implementan en SQLXML 4.0.

Característica Elemento
Ejes antecesor, antecesor o propio, descendiente, descendiente o propio (//),, después, siguiente, relacionado siguiente, espacio de nombres, anterior, relacionado anterior
Predicados con valores numéricos
Operadores aritméticos mod
Funciones de nodo antecesor, antecesor o propio, descendiente, descendiente o propio (//),, después, siguiente, relacionado siguiente, espacio de nombres, anterior, relacionado anterior
Funciones de cadena string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate()
funciones booleanas lang()
Funciones numéricas sum(), floor(), ceiling(), round()
Operador de unión |

Cuando especifique consultas XPath en una plantilla, tenga en cuenta el siguiente comportamiento:

  • XPath puede contener caracteres como < o y que tienen significados especiales en XML (y la plantilla es un documento XML). Debe escapar estos caracteres mediante la codificación XML o especificar el XPath en la dirección URL.

Consulte también

Utilizar consultas XPath en SQLXML 4.0