Aracılığıyla paylaş


Açıklama eklenmiş xsd şemaları kullanarak sorguları (SQLxml 4.0)

Bir şablon xsd şeması karşı XPath sorguları belirterek veritabanından veri almak için metin notlu bir şema sorguları belirtebilirsiniz.

The <sql:xpath-query> element allows you to specify an XPath query against the XML view that is defined by the annotated schema.Karşı XPath sorgusu olduğu yürütülecek notlu şema kullanılarak tanımlanan mapping-schema öznitelik, <sql:xpath-sorgu> öğesi.

Şablonları içeren bir veya daha çok sorgu geçerli xml belgeleridir.for xml ve XPath sorguları bir belge parçası döndürür.Şablonları belge parçaları için kap görevi görecek; Şablonları, böylece tek bir üst düzey öğesi belirlemek için bir yol sağlar.

Bu konudaki örneklerde şablonlarını veritabanından veri almak için metin notlu bir şema karşı bir XPath sorgusu belirtmek için kullanın.

Örneğin, açıklama eklenmiş bu şema göz önünde bulundurun:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Person" >
     <xsd:complexType>
       <xsd:attribute name="BusinessEntityID" type="xsd:string" /> 
       <xsd:attribute name="FirstName" type="xsd:string" /> 
       <xsd:attribute name="LastName"  type="xsd:string" /> 
     </xsd:complexType>
  </xsd:element>
</xsd:schema>

Resimde amacıyla bu xsd şeması Schema2.xml adlı bir dosyada depolanır.Sonra bir XPath sorgusu (Schema2T.xml) aşağıdaki şablonu dosyasında belirtilen metin notlu şemaya sahip olabilir:

<sql:xpath-query 
     xmlns:sql="urn:schemas-microsoft-com:xmlsql"
     >
          Person.Person[@BusinessEntityID="1"]
</sql:xpath-query>

Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablon dosyasının bir parçası sorguyu yürütmek için kullanın.Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Satır içi eşleme şemaları kullanarak

Açıklama eklenmiş bir şema bir şablonu doğrudan eklenebilir ve şablondaki satır içi şema karşı bir XPath sorgusu sonra belirtilebilir.Şablon bir updategram da olabilir.

Bir şablon birden çok satır içi şemalar içerebilir.Bir şablonun içerdiği bir satır içi şema kullanmak için ID öznitelik benzersiz bir değer ile <xsd: Schema> öğesini ve sonra kullanın #idvalue satır içi şema başvurusu için.The id attribute is identical in behavior to the sql:id ({urn:schemas-microsoft-com:xml-sql}id) used in XDR schemas.Daha fazla bilgi için bkz: Açıklama eklenmiş xdr şemalarını (SQLxml 4.0 kullanım dışı) sorgular kullanma.

Örneğin, iki satır içi açıklama şemaları aşağıdaki şablonu belirtir:

<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
        xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
        id='InLineSchema1' sql:is-mapping-schema='1'>
  <xsd:element name='Employees' ms:relation='HumanResources.Employee'>
    <xsd:complexType>
      <xsd:attribute name='LoginID' 
                     type='xsd:string'/>
      <xsd:attribute name='JobTitle' 
                     type='xsd:string'/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
        xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
        id='InLineSchema2' sql:is-mapping-schema='1'>
  <xsd:element name='Persons' ms:relation='Person.Person'>
    <xsd:complexType>

      <xsd:attribute name='BusinessEntityID' 
                     type='xsd:string' />
      <xsd:attribute name='FirstName' 
                     type='xsd:string' />
      <xsd:attribute name='LastName' 
                     type='xsd:string' />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql' 
        mapping-schema='#InLineSchema1'>
    /Employees[@LoginID='adventure-works\guy1']
</sql:xpath-query>

<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql' 
        mapping-schema='#InLineSchema2'>
    /Persons[@BusinessEntityID='1']
</sql:xpath-query>
</ROOT>

Şablonu da iki XPath sorguları belirtir.Her bir <xpath sorgusu> öğeleri tanıtan eşleme şema belirterek mapping-schema öznitelik.

Satır içi şema şablonunda belirttiğiniz zaman sql:is-mapping-schema ek açıklama ayrıca belirtilmesi gerekir <xsd: Schema> öğesi.The sql:is-mapping-schema takes a Boolean value (0=false, 1=true).Satır içi şema ile sql: iş-eşleme şeması = "1" açıklama eklenmiş satır içi şema kabul edilir ve xml belgesinde döndürülür.

The sql:is-mapping-schema annotation belongs to the template namespace urn:schemas-microsoft-com:xml-sql.

Bu örneği sınamak için şablonu (InlineSchemaTemplate.xml) yerel bir dizine kaydedin oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Yanında mapping-schema üzerindeki öznitelik <sql:xpath-sorgu> öğe şablonunda (, XPath sorgusu vardır), ya da <updg:sync> öğesi bir updategram içinde şunları:

  • Belirtmek mapping-schema üzerindeki öznitelik <kök> öğesi (genel bildirim) şablonu.Bu eşleme şema sonra Hayır açık olan tüm XPath ve updategram düğümler tarafından kullanılan varsayılan şema olur mapping-schema ek açıklama.

  • Belirtmek mapping schema öznitelik ado kullanarak Command nesne.

The mapping-schema attribute that is specified on the <xpath-query> or <updg:sync> element has the highest precedence; the ADO Command object has the lowest precedence.

Not XPath sorgusu bir şablonda belirtin ve hangi karşı XPath sorgusu yürütüldüğünde bir eşleme şema belirtmek, XPath sorgusu değerlendirildiğini bir dbobject türü bir sorgu.Örneğin, bu şablonu göz önünde bulundurun:

<sql:xpath-query 
     xmlns:sql="urn:schemas-microsoft-com:xmlsql">
          Production.ProductPhoto[@ProductPhotoID='100']/@LargePhoto
</sql:xpath-query>

Şablon bir XPath sorgusu belirtir ancak eşleme şema belirtin.Therefore, this query is treated as a dbobject type query in which Production.ProductPhotois the table name and @ProductPhotoID='100' is a predicate that finds a product photo with the ID value of 100.@ LargePhoto sütun değerini almak var.