Bir hedef ad alanı kullanarak öznitelik (SQLXML 4.0) targetNamespace belirtme
XSD şemaları yazılı olarak XSD kullanabilirsiniz targetNamespace öznitelik hedef ad alanı belirtmek için.Bu konu açıklar nasıl XSD targetNamespace, elementFormDefault, and attributeFormDefault öznitelikleri çalışmak, oluşturulan XML örnek nasıl etkiledikleri ve XPath sorguları ile ad boşluklarını nasıl belirtilir.
Kullanabileceğiniz xsd:targetNamespace öznitelik öğeleri ve öznitelik s varsayılan ad alanından farklı bir ad alanı yerleştirmek için.Yerel olarak bildirilen öğeler ve öznitelikler, şema ya da açık olarak bir önek kullanarak, bir ad veya örtülü olarak varsayılan olarak, bu koşullu görüntülenip görüntülenmeyeceğini belirtebilirsiniz.Kullanabileceğiniz elementFormDefault and öznitelik FormDefault özniteliks on the <annotation> öğe, genel nitelik, yerel öğeler ve öznitelik s veya belirtmek için kullanabileceğiniz Form öznitelik tek tek öğeleri ve öznitelik s ayrı ayrı olarak belirtmek için.
Ö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.
C.Hedef ad alanı belirleme
Kullanarak, hedef ad alanı aşağıdaki XSD şeması belirtir xsd:targetNamespace özniteliği.Şema ayrıca ayarlar elementFormDefault and attributeFormDefault öznitelik değerleri**"nitelenmemiş"** (Bu özniteliklerin varsayılan değer).Bu bir genel bildirim ve yerel öğeler (etkiler.<Sipariş> Şemadaki) ve (özniteliklerMüşteriNo, Kişiadı, and Sipariş Kimliği şemasındaki).
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:CO="urn:MyNamespace"
targetNamespace="urn:MyNamespace" >
<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"
type="CO:CustomerType" />
<xsd:complexType name="CustomerType" >
<xsd:sequence>
<xsd:element name="Order"
sql:relation="Sales.SalesOrderHeader"
sql:relationship="CustOrders"
type="CO:OrderType" />
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="SalesPersonID" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="OrderType" >
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:schema>
Şema:
The CustomerType and OrderType type declarations are global and, therefore, are included in the schema's hedef namespace.Sonuç olarak, bu tür bildiriminde başvurulan <Müşteri> öğe ve <Sipariş> alt öğe, hedef ad alanı ile ilişkili olan bir önek belirtildi.
The <Customer> element is also included in the hedef namespace of the schema because it is a global element in the schema.
Şemaya aşağıdaki XPath sorguyu yürütün:
(/CO:Customer[@CustomerID=1)
XPath sorgusu (yalnızca birkaç siparişlerinin gösterilir) Bu örnek belgesi oluşturur:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<y0:Customer xmlns:y0="urn:MyNamespace"
CustomerID="ALFKI" ContactName="Maria Anders">
<Order CustomerID="ALFKI" OrderID="10643" />
<Order CustomerID="ALFKI" OrderID="10692" />
...
</y0:Customer>
</ROOT>
Bu örnek belgeyi tanımlayan urn:MyNamespace ad ve bir önek (ilişkilendirir.y0) kendisine. Önek yalnızca uygulanan <Müşteri> Genel öğesi. (Alt öğesi bildirildiğinden global öğedir <annotation> öğe şemasındaki.)
Önek yerel öğeler ve öznitelikler için çünkü uygulanmaz değeri elementFormDefault and attributeFormDefault öznitelikleri için küme**"nitelenmemiş"** şemasındaki.Dikkat <Sipariş> bildirim alt görünür, çünkü yerel öğedir <complexType> öğe tanımlayan <CustomerType> Öğe. Benzer şekilde, öznitelikleri (MüşteriNo, Sipariş Kimliği, and Kişiadı) yerel, genel'yok ' tur.
Bu şemayı çalışma bir örneğini oluşturmak için
Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı targetNameSpace.xml kaydedin.
Şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı targetNameSpaceT.xml targetNamespace.xml kaydettiğiniz aynı dizine kaydedin.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="targetNamespace.xml" xmlns:CO="urn:MyNamespace" > /CO:Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
XPath sorgusu şablondaki döndürür <Müşteri> müşterinin bir müşteri kimliği 1'olan öğe. XPath sorgusu ve özniteliği olmayan öğe sorgu için ad alanı önekini belirtir unutmayın.(Yerel öznitelikleri nitelenir, şemadaki belirtilen.)
Eşleştirme şemasını (targetNamespace.xml) dizini belirtilen şablon kaydedildiği göreli dizinidir.Mutlak bir yol da, örneğin belirtilebilir:
mapping-schema="C:\MyDir\targetNamepsace.xml"
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 sorgu yürütmek işlemi için kullanma.
Şema belirtir. elementFormDefault and attributeFormDefault değeri özniteliklerle**"tam"**, tüm yerel öğe ve özniteliklerin tam örnek belgeyi gerekir.Bu öznitelikleri eklemek için önceki şema değiştirebileceğiniz <annotation> öğe ve şablonu yeniden yürütün. Öznitelikleri şimdi ayrıca örnek nitelenir için ad alanı önekini eklemek için XPath sorgusu değiştirir.
Bu, gözden geçirilmiş XPath sorgusu oluşur:
/CO:Customer[@CO:CustomerID=1]
Döndürülen XML dosyasıdır:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<y0:Customer xmlns:y0="urn:MyNamespace" CustomerID="1" SalesPersonID="280">
<Order SalesOrderID="43860" CustomerID="1" />
<Order SalesOrderID="44501" CustomerID="1" />
<Order SalesOrderID="45283" CustomerID="1" />
<Order SalesOrderID="46042" CustomerID="1" />
</y0:Customer>
</ROOT>