Aracılığıyla paylaş


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

XPath sorguları bir şablon xsd şeması karşı belirterek veritabanından veri almak için bir açıklama eklediğiniz şema sorguları belirtebilirsiniz.

<Sql:xpath-sorgu > öğesi açıklama eklediğiniz şema tarafından tanımlanan xml Görünümü karşı bir XPath sorgusu belirtmenize olanak verir. Açıklama eklediğiniz şema karşı XPath sorgusu olan yürütülecek kullanılarak tanımlanır mapping-schemaözniteliği <sql:xpath-sorgu > öğesi.

Şablonları içeren bir veya daha çok sorgu geçerli xml belgeleridir. for xml ve XPath sorguları belge parçası döndürür. Şablonlar, belge parçaları için kapsayıcı olarak davranmak; şablonları, böylece bir tek, üst düzey öğesi belirtmek için bir yol sağlar.

Bu konudaki örneklerde, veritabanından veri almak için bir açıklama eklediğiniz şema karşı bir XPath sorgusu belirtmek için şablonları kullanın.

Örneğin, bu açıklama eklediğiniz ş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.Contact" >
     <xsd:complexType>
       <xsd:attribute name="ContactID" type="xsd:string" /> 
       <xsd:attribute name="FirstName" type="xsd:string" /> 
       <xsd:attribute name="LastName"  type="xsd:string" /> 
     </xsd:complexType>
  </xsd:element>
</xsd:schema>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Contact" >
     <xsd:complexType>
       <xsd:attribute name="ContactID" 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ı, bu xsd şeması Schema2.xml adlı dosyada depolanır. Ardından, aşağıdaki şablon dosyasında (Schema2T.xml) belirtilen Açıklama eklediğiniz şema karşı bir XPath sorgusu da olabilir:

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

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

Sonra oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablon dosyasının bir parçası sorgu yürütmek için kullanın. Daha fazla bilgi için, bkz. Açıklama eklenmiş xdr şemalarını (sqlxml 4.0 onaylanmaz).

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

Bir açıklama eklediğiniz şema doğrudan şablona dahil edilebilir 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 özniteliği benzersiz bir değer ile <xsd: Schema öğesinden > öğesini ve sonra kullanım #idvalue satır içi şema başvurusu için. ID özniteliği için davranış aynı SQL: id ({urn: schemas-microsoft-com: XML-sql} ID) xdr şemalarını kullanılır.

Örneğin, aşağıdaki şablon iki satır içi açıklamalı şemalarını 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='Title' 
                     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='Contacts' ms:relation='Person.Contact'>
    <xsd:complexType>

      <xsd:attribute name='ContactID' 
                     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'>
    /Contacts[@ContactID='1']
</sql:xpath-query>
</ROOT>

<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='Title' 
                     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='Contacts' ms:relation='Person.Contact'>
    <xsd:complexType>

      <xsd:attribute name='ContactID' 
                     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'>
    /Contacts[@ContactID='1']
</sql:xpath-query>
</ROOT>

Şablon da iki XPath sorguları belirtir. Her <xpath sorgusu > öğeleri tanımlayan eşleme şema belirterek mapping-schemaözniteliği.

Bir satır içi şema şablonunda belirttiğiniz zaman sql:is-mapping-schemaek açıklama Ayrıca belirtilmesi gerekir üzerinde <xsd: Schema öğesinden > öğesi. sql:is-mapping-schemaBir Boole değerini alır (0 = false, 1 = true). Bir satır içi şema ile sql: is-eşleme şema = "1" satır içi açıklama eklediğiniz şema kabul edilir ve xml belgesinde döndürülmez.

sql:is-mapping-schemaEklenti şablonu ad alanına ait 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.

Belirterek ek olarak mapping-schemaözniteliği üzerinde <sql:xpath-sorgu > öğe şablonunda (XPath sorgusu olduğunda), ya da <updg:sync > öğesi bir updategram, aşağıdakileri yapabilirsiniz:

  • Belirtmek mapping-schemaözniteliği üzerinde <kök > öğe şablonu (genel bildirimi). Bu eşleme şema sonra hiçbir açık olan tüm XPath ve updategram düğümler tarafından kullanılacak varsayılan şema olur mapping-schemaaçıklama.

  • Belirtmek mapping schemaözniteliği ado kullanarak Commandnesnesini.

mapping-schemaOlarak belirtilen öznitelik <xpath sorgusu > ya <updg:sync > en yüksek önceliğe; öğesinin sahiptir ado Commandnesnesi en düşük önceliğe sahiptir.

Not XPath sorgusu şablonu belirtirseniz ve eşleme şema karşı XPath sorgusu yürütüldüğünde belirtmezseniz, 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>

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

XPath sorgusu şablonu belirtir, ancak eşleme şema belirtmiyor. Bu nedenle, bu sorgu işlenir bir dbobject yazın Production.ProductPhoto tablo adı olan sorgu ve ProductPhotoID = '100' ID değeri 100 ürün fotoğraf bulduğu yüklemi olur. @ LargePhoto sütun değerini almak olduğunu.