Sdílet prostřednictvím


Specifikace explicitních konverzních funkcí v XPath dotazech (SQLXML 4.0)

platí pro:SQL Serverazure SQL Database

Následující příklady ukazují, jak jsou explicitní konverzní funkce specifikovány v dotazech XPath. XPath dotazy v těchto příkladech jsou specifikovány vůči mapovacímu schématu obsaženému v SampleSchema1.xml. Pro informace o tomto ukázkovém schématu viz Ukázka anotovaného XSD schématu pro příklady XPath (SQLXML 4.0).

Examples

A. Použijte explicitní konverzní funkci number()

Funkce číslo() převádí argument na číslo.

Za předpokladu, že hodnota ContactID není číselná, následující dotaz převede ContactID na číslo a porovná jej s hodnotou 4. Dotaz pak vrátí všechny <děti prvků Employee> kontextového uzlu s atributem ContactID , který má číselnou hodnotu 4:

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

Lze zadat zkratku na atributovou osu (@) a protože je výchozí osa dítěte , lze ji z dotazu vynechat:

/Contact[number(@ContactID) = 4]  

Relační termíny dotaz vrací zaměstnance s ContactID 4.

Otestování dotazu XPath proti mapovacímu schématu
  1. Zkopírujte ukázkový kód schématu a vložte ho do textového souboru. Uložte soubor jako SampleSchema1.xml.

  2. Vytvořte následující šablonu (ExplicitConversionA.xml) a uložite ji do adresáře, kde byl SampleSchema1.xml uložen.

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

    Adresářová cesta určená pro mapovací schéma (SampleSchema1.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

Výsledná sada pro provedení této šablony je:

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

B. Použijte explicitní konverzní funkci string()

Funkce string() převádí argument na řetězec.

Následující dotaz převede ContactID na řetězec a porovná jej s hodnotou řetězce "4". Dotaz vrací všechny <děti prvků Employee> kontextového uzlu s ContactID s hodnotou řetězce "4":

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

Lze zadat zkratku na atributovou osu (@) a protože je výchozí osa dítěte , lze ji z dotazu vynechat:

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

Funkčně tento dotaz vrací stejné výsledky jako předchozí příklad, ale vyhodnocení se provádí proti hodnotě řetězce a ne vůči číselné hodnotě (tedy číslu 4).

Otestování dotazu XPath proti mapovacímu schématu
  1. Zkopírujte ukázkový kód schématu a vložte ho do textového souboru. Uložte soubor jako SampleSchema1.xml.

  2. Vytvořte následující šablonu (ExplicitConversionB.xml) a uložite ji do adresáře, kde byl SampleSchema1.xml uložen.

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

    Adresářová cesta určená pro mapovací schéma (SampleSchema1.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

Zde je výsledná sada provedení šablony:

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