Specificering av explicita konverteringsfunktioner i XPath-frågor (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Följande exempel visar hur explicita konverteringsfunktioner 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. Använd funktionen number() explicit konvertering

Number()-funktionen omvandlar ett argument till ett tal.

Om vi antar att värdet på ContactID är icke-numeriskt, konverterar följande fråga ContactID till ett nummer och jämför det med värdet 4. Frågan returnerar sedan alla <Employee-elementbarn> till kontextnoden med ContactID-attributet som har ett numeriskt värde på 4:

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

En genväg till attributaxeln (@) kan specificeras, och eftersom barnaxeln är standarden kan den utelämnas från frågan:

/Contact[number(@ContactID) = 4]  

I relationsmässiga termer returnerar sökningen en anställd med ContactID 4.

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 (ExplicitConversionA.xml) och spara den i katalogen där SampleSchema1.xml sparades.

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

Resultatuppsättningen för denna mallexekvering är:

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

B. Använd string() explicit konverteringsfunktion

Sträng()-funktionen omvandlar ett argument till en sträng.

Följande fråga konverterar ContactID till en sträng och jämför den med strängvärdet "4". Frågan returnerar alla <Employee-elementbarn> till kontextnoden med ett ContactID med strängvärdet "4":

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

En genväg till attributaxeln (@) kan specificeras, och eftersom barnaxeln är standarden kan den utelämnas från frågan:

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

Funktionellt ger denna fråga samma resultat som den föregående exempelfrågan, även om utvärderingen görs mot ett strängvärde och inte det numeriska värdet (det vill säga talet 4).

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 (ExplicitConversionB.xml) och spara den i katalogen där SampleSchema1.xml sparades.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        Contact[string(@ContactID)="4"]  
      </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 resultatuppsättningen för mallexekveringen:

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