Especificar funciones de conversión explícita en consultas XPath (SQLXML 4.0)
Se aplica a: SQL ServerAzure SQL Database
En los siguientes ejemplos se muestra cómo especificar funciones de conversión explícita en consultas XPath. Las consultas XPath de estos ejemplos se especifican en el esquema de asignación que se incluye en SampleSchema1.xml. Para obtener información sobre este esquema de ejemplo, vea Ejemplo de esquema XSD anotado para ejemplos de XPath (SQLXML 4.0).
Ejemplos
A Usar la función de conversión explícita number()
La función number() convierte un argumento en un número.
Suponiendo que el valor de ContactID no es numérico, la siguiente consulta convierte ContactID en un número y la compara con el valor 4. A continuación, la consulta devuelve todos los elementos <secundarios employee> del nodo de contexto con el atributo ContactID que tiene un valor numérico de 4:
/child::Contact[number(attribute::ContactID)= 4]
Se puede especificar un acceso directo al eje de atributos (@) y, dado que el eje secundario es el valor predeterminado, se puede omitir de la consulta:
/Contact[number(@ContactID) = 4]
En términos relacionales, la consulta devuelve un empleado con un ContactID de 4.
Para probar la consulta XPath en el esquema de asignación
Copie el código de esquema de ejemplo y péguelo en un archivo de texto. Guarde el archivo como SampleSchema1.xml.
Cree la siguiente plantilla (ExplicitConversionA.xml) y guárdela en el mismo directorio donde esté guardado el archivo SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact[number(@ContactID)=4] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (SampleSchema1.xml) es relativa al directorio donde se guarda la plantilla. También puede especificarse una ruta de acceso absoluta como, por ejemplo:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.
Para obtener más información, consulte Uso de ADO para ejecutar consultas SQLXML 4.0.
Éste es el conjunto de resultados de ejecución de esta plantilla:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
</ROOT>
B. Usar la función de conversión explícita string()
La función string() convierte un argumento en una cadena.
La consulta siguiente convierte ContactID en una cadena y la compara con el valor de cadena "4". La consulta devuelve todos los elementos <secundarios del elemento Employee> del nodo de contexto con un ContactID con un valor de cadena de "4":
/child::Contact[string(attribute::ContactID)="4"]
Se puede especificar un acceso directo al eje de atributos (@) y, dado que el eje secundario es el valor predeterminado, se puede omitir de la consulta:
/Contact[string(@ContactID)="4"]
Funcionalmente, esta consulta devuelve los mismos resultados que la consulta de ejemplo anterior, pero la evaluación se realiza en un valor de cadena y no en el valor numérico (es decir, el número 4).
Para probar la consulta XPath en el esquema de asignación
Copie el código de esquema de ejemplo y péguelo en un archivo de texto. Guarde el archivo como SampleSchema1.xml.
Cree la siguiente plantilla (ExplicitConversionB.xml) y guárdela en el mismo directorio donde esté guardado el archivo SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> Contact[string(@ContactID)="4"] </sql:xpath-query> </ROOT>
La ruta de acceso al directorio especificada para el esquema de asignación (SampleSchema1.xml) es relativa al directorio donde se guarda la plantilla. También puede especificarse una ruta de acceso absoluta como, por ejemplo:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.
Para obtener más información, consulte Uso de ADO para ejecutar consultas SQLXML 4.0.
Éste es el conjunto de resultados de ejecución de la plantilla:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
</ROOT>