Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se puede especificar una consulta del lenguaje de ruta de acceso XML (XPath) 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 la creación de vistas mediante la instrucción CREATE VIEW y la escritura de consultas SQL en ellas.
Nota:
Para comprender las consultas XPath en SQLXML 4.0, debe estar familiarizado con las vistas XML y conceptos relacionados, como plantillas y 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, considere 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 basado 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 fecha de pedido 7/14/1999.
El lenguaje XPath se define mediante World Wide Web Consortium (W3C) como 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.
Las siguientes son diferencias clave entre la implementación de XPath de W3C y la implementación de 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 los nodos 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 se determina. Por lo tanto, los predicados numéricos y los ejes que usan el orden del documento (como
following) no se implementan.La falta de orden de documento también significa que el valor de cadena de un nodo solo se puede evaluar cuando ese nodo se asigna a una sola columna de una sola fila. Un elemento con elementos secundarios o un nodo IDREFS o NMTOKENS no se puede convertir en cadena.
Nota:
En algunos casos, la
key-fieldsanotación o las claves de larelationshipanotació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,numberyboolean. Para obtener más información, consulte Tipos de datos XPath (SQLXML 4.0).Consultas entre productos
SQLXML 4.0 no admite consultas XPath entre productos, como
Customers[Order/@OrderDate=Order/@ShipDate]. Esta consulta selecciona todos los clientes con cualquier pedido para el que OrderDate sea igual a ShipDate de cualquier pedido.Sin embargo, SQLXML 4.0 admite consultas como
Customer[Order[@OrderDate=@ShippedDate]], que selecciona Clientes con cualquier pedido para el que OrderDate sea igual a ShipDate.Control de errores y seguridad
Dependiendo del esquema y la expresión de consulta XPath que se usan, Transact-SQL errores podrían exponerse a los usuarios en determinadas condiciones.
Las tablas de las secciones siguientes proporcionan detalles sobre cómo la implementación de consultas XPath en SQLXML 4.0 difiere de la especificación W3C en estas áreas.
Funcionalidad admitida
En la tabla siguiente 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 |
attributeEjes , child, parenty self |
Especificar ejes en consultas XPath (SQLXML 4.0) |
| Predicados con valores booleanos, incluidos 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ícitas |
number(), , string(), Boolean() |
Especificar funciones de conversión explícitas en consultas XPath (SQLXML 4.0) |
| Operadores booleanos | AND, OR | Especificar operadores booleanos en consultas XPath (SQLXML 4.0) |
| Funciones booleanas |
true(), , false(), not() |
Especificación de funciones booleanos en consultas XPath (SQLXML 4.0) |
| Variables XPath | Especificar variables XPath en consultas XPath (SQLXML 4.0) |
Funcionalidad no admitida
En la tabla siguiente se muestran las características del lenguaje XPath que no se implementan en SQLXML 4.0.
| Característica | Elemento |
|---|---|
| Ejes |
ancestor, ancestor-or-self, descendant, descendant-or-self (//), following, following-sibling, namespace, precedingpreceding-sibling |
| Predicados con valores numéricos | |
| Operadores aritméticos | Mod |
| Funciones de nodo |
ancestor, ancestor-or-self, descendant, descendant-or-self (//), following, following-sibling, namespace, precedingpreceding-sibling |
| 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 Union | | |
Al especificar consultas XPath en una plantilla, tenga en cuenta el comportamiento siguiente:
- 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.