Aracılığıyla paylaş


Geçerli ID, IDREF ve IDREFS türü öznitelikleri kullanma SQL:id oluşturma-öneki (xdr şeması)

Önemli notÖnemli

Bu konuda eski uygulamalar için bir referans olarak dahil edilir.Bu özelliği yok ileride geliştirme çalışmaları yapılacaktır.Bu özellik yeni geliştirme çalışması kullanmaktan kaçının.Bunun yerine, açıklama eklenmiş xsd şemaları, xml görünümlerini oluşturmak için kullanın.Daha fazla bilgi için bkz: Açıklama eklenmiş xsd şemaları (SQLxml 4.0) Giriº.xsd şemaları için varolan açıklama eklenmiş xdr şemalarını dönüştürebilirsiniz.Daha fazla bilgi için bkz: Açıklama eklenmiş xdr şemalarını eşdeğer xsd şemaları (SQLxml 4.0) dönüştürme.

öznitelik ID türünün öznitelik olarak belirtilebilir.IDREF ya da IDREFS belirtilen öznitelikler sonra böylece intradocument bağlantıları etkinleştirme kimliği türü öznitelikleri belirtmek için kullanılabilir.

ID, IDREF ve IDREFS birincil anahtar yabancı anahtar (BA/YA) veritabanında ilişkileri, bazı küçük farklar karşılık gelir.xml belgesinde kimliği türü öznitelik değerleri ayrı olmalıdır.Bir xml belgesinde MüşteriNo ve SalesOrderID öznitelikleri varsa, bu değerler ayrı olmalıdır.Ancak, bir veritabanında, MüşteriNo ve SalesOrderID sütunları aynı değerlere sahip olabilir (örneğin, MüşteriNo = 1 ve SiparişNo = 1 olan veritabanında geçerli).

Geçerli olması ID, IDREF ve IDREFS öznitelikleri için:

  • ID değerinin xml belge içinde benzersiz olmalıdır.

  • Her IDREF ve IDREFS için xml belgesinde başvurulan kod değerleri olmalıdır.

  • Bir ID, IDREF ve IDREFS değeri belirteci olarak adlandırılmış olması gerekir (örneğin, 101 tamsayı değeri bir kimlik değeri olamaz).

  • Sütun türü ID, IDREF ve IDREFS türü öznitelikleri eşleştirilemez text, ntext, image, veya başka bir ikili veri türü (örneğin, timestamp).

Bir xml belge birden çok kimlik varsa sql:id-prefix değerlerinin benzersiz olmasını sağlamak için belirtilen ek açıklama..The sql:id-prefix annotation is also used to create named tokens from numbers.Belirtilen değer sql:id-prefix olması bir geçerli adı karakter.

The sql:id-prefixattribute prepends the values of ID, IDREF, and IDREFS with a string, thereby making them unique.Hiçbir çek önekleri geçerliliğini ve ID, IDREF ve IDREFS değerleri benzersizliğini sağlamak için yapılır.

The sql:id-prefixattribute is ignored on attributes that are not of type ID, IDREF, or IDREFS.

Not

Her ID, IDREF ve IDREFS öznitelikleri (belirtilmişse) önekiyle birlikte 4.000 karakterle sınırlı değeridir.

Örnekler

Aşağıdaki örnekler kullanarak çalışma örnekleri oluşturmak için belirli gereksinimleri karşılaması gerekir.Daha fazla bilgi için bkz: SQLxml örnekleri çalıştırma gereksinimleri.

A.SQL:id belirtin-ID türünün öznitelik için önek

Bu xdr şeması'nda, SalesOrderID ve MüşteriNo öznitelik kimliği türü olarak bildirilir.Kimlikleri benzersiz ve geçerli olduğundan emin olmak için sql:id-prefix Bu öznitelikler için ek açıklama belirtilen:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <ElementType name="Order" sql:relation="Sales.SalesOrderHeader" sql:key-fields="SalesOrderID">
    <AttributeType name="SalesOrderID" dt:type="id" sql:id-prefix="Ord-" />
    <AttributeType name="OrderDate" />
 
    <attribute type="SalesOrderID" />
    <attribute type="OrderDate" />
  </ElementType>

  <ElementType name="Customer" sql:relation="Sales.Customer">
    <AttributeType name="CustomerID" dt:type="id" />
    <attribute type="CustomerID" />
    <AttributeType name="OrderList" dt:type="idrefs"
                                 sql:id-prefix="Ord-" />
    <attribute type="OrderList" sql:relation="Sales.SalesOrderHeader" sql:field="SalesOrderID">
        <sql:relationship
                key-relation="Sales.Customer"
                key="CustomerID"
                foreign-relation="Sales.SalesOrderHeader"
                foreign-key="CustomerID" />
    </attribute>
    <element type="Order">
        <sql:relationship key-relation="Sales.SalesOrderHeader"
                          key="SalesOrderID"
                          foreign-relation="Sales.Customer"
                          foreign-key="SalesOrderID" />
    </element>
  </ElementType>
</Schema>

Örnek XPath sorgusu şema karşı sınamak için

  1. Yukarıdaki şema kodu kopyalayın ve bir metin dosyasına yapıştırın.Dosya sqlPrefix-Xdr.xml kaydedin.

  2. Aşağıdaki şablon kopyalama ve bir metin dosyasına yapıştırın.Dosya sqlPrefix-sqlPrefix-Xdr.xml kaydettiğiniz aynı dizinde XdrT.xml olarak kaydedin.Şablon içindeki XPath sorgusu verir <Müşteri> ve <Sipariş> alt öğelerini MüşteriNo 1 nerede.

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

    Dizin yol (sqlPrefix-Xdr.xml) eşleme şema şablonun kaydedileceği dizini ile ilişkili olduğu için belirtilen.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\sqlPrefix-Xdr.xml"
    
  3. 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.

Sonuç küme aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="1" OrderIDList="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
    <Order SalesOrderID="Ord-43860" OrderDate="2005-08-01T00:00:00" /> 
    <Order SalesOrderID="Ord-44501" OrderDate="2005-11-01T00:00:00" /> 
    <Order SalesOrderID="Ord-45283" OrderDate="2006-02-01T00:00:00" /> 
    <Order SalesOrderID="Ord-46042" OrderDate="2006-05-01T00:00:00" /> 
  </Customer>
</ROOT>

Ayrıca bkz.

Başvuru