Megosztás a következőn keresztül:


Boolean függvények meghatározása XPath lekérdezésekben (SQLXML 4.0)

A következőkre vonatkozik:SQL ServerAzure SQL Database

Az alábbi példák bemutatják, hogyan definiálják a Boole-függvények az XPath lekérdezésekben. Az XPath lekérdezések ezekben a példákban a SampleSchema1.xmláltal található leképezési sémához vonatkoznak. Erről a mintasémáról további információkért lásd: Sample Annotated XSD séma XPath példákhoz (SQLXML 4.0).

Példák

A. Megadjuk a not() Boole-függvényt

Ez a lekérdezés visszaadja a <kontextuscsomópont összes Customer> gyermek elemét, amelyekben nincs <Order> gyermek elem:

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

A gyermektengely az alapértelmezett. Ezért a lekérdezés a következőképpen meghatározható:

/Customer[not(Order)]  

Az XPath lekérdezés tesztelése a leképezési sémával

  1. Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.

  2. Hozza létre a következő sablont (BooleanFunctionsA.xml), és elmentse abba a könyvtárba, ahol SampleSchema1.xml el van mentve.

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

    A leképezési sémához (SampleSchema1.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.

Íme a sablon végrehajtásának részleges eredményhalmaza:

<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. Határozzuk meg a true() és hamis() Boole-függvényeket

Ez a lekérdezés visszaadja az összes <Ügyfél> elem gyermekét a kontextuscsomópontban, amelyekben nincs <Order> gyermek elem. Kapcsolati szempontból ez a lekérdezés visszaadja azokat az ügyfeleket, akik nem adtak le rendelést.

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

A gyermektengely az alapértelmezett. Ezért a lekérdezés a következőképpen meghatározható:

/Customer[Order=false()]  

Ez a lekérdezés egyenértékű a következővel:

/Customer[not(Order)]  

A következő lekérdezés visszaadja az összes olyan vásárlót, aki legalább egy rendelést tett:

/Customer[Order=true()]  

Ez a lekérdezés ekvivalens ezzel:

/Customer[Order]  

Az XPath lekérdezés tesztelése a leképezési sémával

  1. Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.

  2. Hozza létre a következő sablont (BooleanFunctionsB.xml), és elmentse abba a könyvtárba, ahol SampleSchema1.xml el van mentve.

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

    A leképezési sémához (SampleSchema1.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.

Íme a sablon végrehajtásának részleges eredményhalmaza:

<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>