Aracılığıyla paylaş


sql:is-constant (SQLXML 4.0) kullanarak Sabit Elemanlar Oluşturma

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Sabit bir eleman belirtmek için - yani XSD şemasında herhangi bir veritabanı tablosu veya sütuna eşlemeyen bir eleman - sql:is-constant annotasyonunu kullanabilirsiniz. Bu açıklama bir Boolean değeri alır (0 = yanlış, 1 = doğru). Kabul edilebilir değerler 0, 1, doğru ve yanlıştır. sql:is-constant açıklaması, özniteliği olmayan bir eleman üzerinde belirtilebilir. Eğer gerçek (veya 1) değerine sahip bir elemanda belirtilmişse, o eleman veritabanına eşlenmez ancak XML belgesinde görünmeye devam eder.

sql:is-sabiti açıklaması şu amaçlarla kullanılabilir:

  • XML belgesine üst düzey bir öğe eklemek. XML, belge için tek bir üst düzey öğe (kök eleman) gerektirir.

  • Tüm siparişleri saran bir Sipariş> öğesi gibi bir konteyner öğesi< oluşturmak.

sql:is-constant annotasyonu, complexType> elemanına< eklenebilir.

Örnekler

Aşağıdaki örneklerle çalışma örnekleri oluşturmak için belirli gereksinimleri karşılamanız gerekir. Daha fazla bilgi için Gereksinimler için SQLXML Örnekleri Çalışması için Gereksinimlere bakınız.

A. sql:is-constant olarak bir konteyner elemanı eklemek

Bu annotasyonlu XSD şemasında CustomerOrders<>, sql:is-constant özniteliğinin 1 değeri ile belirlenmesiyle sabit bir eleman olarak tanımlanır. Bu nedenle, <CustomerOrders> herhangi bir veritabanı tablosu veya sütununa eşlenmez. Bu sabit eleman, <Order> child elemanlarından oluşur.

<CustomerOrders> herhangi bir veritabanı tablosu veya sütununa eşlenmese de, ortaya çıkan XML'de Order> alt öğelerini içeren< bir konteyner öğesi olarak görünmeye devam eder.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
<xsd:annotation>  
  <xsd:appinfo>  
    <sql:relationship name="CustOrders"  
        parent="Sales.Customer"  
        parent-key="CustomerID"  
        child="Sales.SalesOrderHeader"  
        child-key="CustomerID" />  
  </xsd:appinfo>  
</xsd:annotation>  
  
  <xsd:element name="Customer" sql:relation="Sales.Customer" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="CustomerOrders" sql:is-constant="1" >  
          <xsd:complexType>  
            <xsd:sequence>  
              <xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"  
                           sql:relationship="CustOrders"   
                           maxOccurs="unbounded" >  
                <xsd:complexType>  
                   <xsd:attribute name="SalesOrderID" type="xsd:integer" />  
                   <xsd:attribute name="OrderDate" type="xsd:date" />  
                   <xsd:attribute name="CustomerID" type="xsd:string" />  
                </xsd:complexType>  
              </xsd:element>  
            </xsd:sequence>  
           </xsd:complexType>  
          </xsd:element>  
         </xsd:sequence>  
          <xsd:attribute name="CustomerID" type="xsd:string" />  
     </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Örnek XPath sorgusunu şema karşısında test etmek için
  1. Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı isConstant.xmlolarak kaydet.

  2. Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde isConstantT.xml olarak kaydet isConstant.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="isConstant.xml">  
            Customer[@CustomerID=1]  
        </sql:xpath-query>  
    </ROOT>  
    

    Eşleme şeması (isConstant.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:

    mapping-schema="C:\MyDir\isConstant.xml"  
    
  3. Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.

    Daha fazla bilgi için bkz. Using ADO to execute SQLXML Queries.

İşte kısmi sonuç kümesi:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
<Customer CustomerID="1">   
  <CustomerOrders>   
    <Order SalesOrderID="43860" OrderDate="2001-08-01" CustomerID="1" />   
    <Order SalesOrderID="44501" OrderDate="2001-11-01" CustomerID="1" />   
    <Order SalesOrderID="45283" OrderDate="2002-02-01" CustomerID="1" />   
    <Order SalesOrderID="46042" OrderDate="2002-05-01" CustomerID="1" />   
    ...  
  </CustomerOrders>   
</Customer>   
</ROOT>