Especificar operadores aritméticos en consultas XPath (SQLXML 4.0)Specifying Arithmetic Operators in XPath Queries (SQLXML 4.0)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

En el ejemplo siguiente se muestra cómo se especifican los operadores aritméticos en consultas XPath.The following example shows how arithmetic operators are specified in XPath queries. La consulta XPath de este ejemplo se especifica en el esquema de asignación que se incluye en SampleSchema1.xml.The XPath query in this example is specified against the mapping schema contained in SampleSchema1.xml. Para obtener información sobre este esquema de ejemplo, vea Esquema XSD anotado de ejemplo para ejemplos de XPath (SQLXML 4.0).For information about this sample schema, see Sample Annotated XSD Schema for XPath Examples (SQLXML 4.0).

EjemplosExamples

A.A. Especificar el operador aritmético *Specify the * arithmetic operator

Esta consulta XPath devuelve <OrderDetail> elementos que satisfacen el predicado especificado:This XPath query returns <OrderDetail> elements that satisfy the predicate specified:

/child::OrderDetail[@UnitPrice * @Quantity = 12.350]  

En la consulta, es el eje y es la prueba de nodo (TRUE si child OrderDetail OrderDetail es , porque el nodo es el nodo <element node> principal del <element> eje secundario).In the query, child is the axis and OrderDetail is the node test (TRUE if OrderDetail is an <element node>, because the <element> node is the primary node for the child axis). Para todos los nodos de elemento, se aplica la prueba en el predicado y solo se devuelven los nodos que <OrderDetail> cumplen la condición.For all the <OrderDetail> element nodes, the test in the predicate is applied, and only those nodes that satisfy the condition are returned.

Nota

Los números en XPath son números de punto flotante de precisión doble y la comparación de números de punto flotante, como los del ejemplo, hace que éstos se redondeen.The numbers in XPath are double-precision floating-point numbers, and comparing floating-point numbers as in the example causes rounding.

Para probar la consulta XPath en el esquema de asignaciónTo test the XPath query against the mapping schema
  1. Copie el código de esquema de ejemplo y péguelo en un archivo de texto.Copy the sample schema code and paste it into a text file. Guarde el archivo como SampleSchema1.xml.Save the file as SampleSchema1.xml.

  2. Cree la siguiente plantilla (ArithmeticOperatorA.xml) y guárdela en el directorio donde haya guardado el archivo SampleSchema1.xml.Create the following template (ArithmeticOperatorA.xml) and save it in the directory where SampleSchema1.xml is saved.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /OrderDetail[@UnitPrice * @OrderQty = 12.350]  
      </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.The directory path specified for the mapping schema (SampleSchema1.xml) is relative to the directory where the template is saved. También puede especificarse una ruta de acceso absoluta como, por ejemplo:An absolute path also can be specified, for example:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.Create and use the SQLXML 4.0 Test Script (Sqlxml4test.vbs) to execute the template.

    Para obtener más información, vea Usar ADO para ejecutar consultas SQLXML 4.0.For more information, see Using ADO to Execute SQLXML 4.0 Queries.

Here is the partial result set of the template execution:    
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-709" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-710" UnitPrice="6.175" OrderQty="2" UnitPriceDiscount="0" />   
   ...  
</ROOT>