Specificering av booleska funktioner i XPath-frågor (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Följande exempel visar hur boolesk funktioner specificeras i XPath-frågor. XPath-frågorna i dessa exempel specificeras mot mappningsschemat som finns i SampleSchema1.xml. För information om detta exempelschema, se Exempel annoterat XSD-schema för XPath-exempel (SQLXML 4.0).

Examples

A. Specificera not() Booleska funktionen

Denna fråga returnerar alla <Kundbarn-element> i kontextnoden som inte har <Order-barn-element> :

/child::Customer[not(child::Order)]  

Barnaxeln är standard. Därför kan frågan specificeras som:

/Customer[not(Order)]  

För att testa XPath-frågan mot mappningsschemat

  1. Kopiera exempelschemakoden och klistra in den i en textfil. Spara filen som SampleSchema1.xml.

  2. Skapa följande mall (BooleanFunctionsA.xml) och spara den i katalogen där SampleSchema1.xml sparas.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        Customer[not(Order)]  
    </sql:xpath-query>  
    </ROOT>  
    

    Den katalogväg som anges för mappningsschemat (SampleSchema1.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.

Här är den delvisa resultatuppsättningen för mallens exekvering:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Customer CustomerID="13" SalesPersonID="286" TerritoryID="7" AccountNumber="13" CustomerType="S" />   
  <Customer CustomerID="32" SalesPersonID="289" TerritoryID="8" AccountNumber="32" CustomerType="S" />   
  <Customer CustomerID="35" SalesPersonID="275" TerritoryID="2" AccountNumber="35" CustomerType="S" />   
  ...  
</ROOT>  

B. Specificera true() och false () booleska funktionerna

Denna fråga returnerar alla <Kundelementbarn> till kontextnoden som inte har <Order-barnelement> . I relationsmässiga termer returnerar denna fråga alla kunder som inte har lagt några beställningar.

/child::Customer[child::Order=false()]  

Barnaxeln är standard. Därför kan frågan specificeras som:

/Customer[Order=false()]  

Den här frågan motsvarar följande:

/Customer[not(Order)]  

Följande sökning returnerar alla kunder som har lagt minst en beställning:

/Customer[Order=true()]  

Denna fråga är ekvivalent med denna:

/Customer[Order]  

För att testa XPath-frågan mot mappningsschemat

  1. Kopiera exempelschemakoden och klistra in den i en textfil. Spara filen som SampleSchema1.xml.

  2. Skapa följande mall (BooleanFunctionsB.xml) och spara den i katalogen där SampleSchema1.xml sparas.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Customer[Order=false()]  
      </sql:xpath-query>  
    </ROOT>  
    

    Den katalogväg som anges för mappningsschemat (SampleSchema1.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.

Här är den delvisa resultatuppsättningen för mallens exekvering:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Customer CustomerID="13" SalesPersonID="286" TerritoryID="7" AccountNumber="13" CustomerType="S" />   
  <Customer CustomerID="32" SalesPersonID="289" TerritoryID="8" AccountNumber="32" CustomerType="S" />   
  <Customer CustomerID="35" SalesPersonID="275" TerritoryID="2" AccountNumber="35" CustomerType="S" />   
  ...  
</ROOT>