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


Explicit konvertáló függvények meghatározása az 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 az explicit konvertáló függvényeket 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. Használd a number() explicit átalakító függvényt

A number() függvény egy argumentumot számmá alakít.

Ha feltételezzük, hogy a ContactID értéke nem numerikus, a következő lekérdezés átalakítja a ContactID-t egy számra, és összehasonlítja azt a 4-es értékkel. A lekérdezés ezután visszaadja a kontextuscsomópont összes <Employee> elem gyermekét, amelynek ContactID attribútuma 4-es számértékű:

/child::Contact[number(attribute::ContactID)= 4]  

A attribútumtengelyhez (@) rövidítés is megadható, és mivel a gyermektengely az alapértelmezett, kihagyható a lekérdezésből:

/Contact[number(@ContactID) = 4]  

Relációs értelemben a lekérdezés egy olyan alkalmazottat eredményez, akinek a ContactID 4.

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. Hozd létre a következő sablont (ExplicitConversionA.xml), és mentsd abba a könyvtárba, ahol SampleSchema1.xml mentették.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Contact[number(@ContactID)=4]  
      </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.

Ennek a sablon végrehajtásának az eredményhalmaza a következő:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />   
</ROOT>  

B. Használd a string() explicit konvertáló függvényt

A string() függvény egy argumentumot stringré alakít.

A következő lekérdezés átalakítja a ContactID-t egy stringgróbbá, és összehasonlítja azt a "4" sorértékkel. A lekérdezés a kontextuscsomópont összes <Employee> elem gyermekét adja vissza, amelynek ContactID-je "4" stringértékkel:

/child::Contact[string(attribute::ContactID)="4"]  

A attribútumtengelyhez (@) rövidítés is megadható, és mivel a gyermektengely az alapértelmezett, kihagyható a lekérdezésből:

/Contact[string(@ContactID)="4"]  

Funkcionálisan ez a lekérdezés ugyanazt az eredményt adja vissza, mint az előző példa lekérdezés, bár az értékelés egy string érték alapján történik, nem pedig a numerikus érték (azaz a 4-es szám).

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. Hozd létre a következő sablont (ExplicitConversionB.xml), és mentsd abba a könyvtárba, ahol SampleSchema1.xml mentették.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        Contact[string(@ContactID)="4"]  
      </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 eredményhalmaza:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />   
</ROOT>