批注式 XSD 架構簡介 (SQLXML 4.0)
您可以使用 XML 架構定義 (XSD) 語言來建立關係型資料的 XML 檢視。 接著可以使用 XML 路徑語言 (XPath) 查詢來查詢這些檢視。 這類似於使用 CREATE VIEW 語句建立檢視,然後針對檢視指定 SQL 查詢。
XML 架構描述 XML 檔的結構,也會描述檔中數據的各種條件約束。 當您針對架構指定 XPath 查詢時,傳回的 XML 檔結構取決於執行 XPath 查詢的架構。
在 XSD 架構中,xsd:schema> 元素會括住整個架構;所有元素宣告都必須包含在 xsd:schema> 元素內。<< 您可以描述定義架構所在命名空間的屬性,以及架構中使用的命名空間做為 xsd:schema> 元素的屬性<。
有效的 XSD 架構必須包含 <定義為下列的 xsd:schema> 元素:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- additional schema definitions here -->
</xsd:schema>
<xsd:schema> 元素衍生自 的 http://www.w3.org/2001/XMLSchemaXML 架構命名空間規格。
XSD 架構的註釋
您可以使用 XSD 架構搭配註釋來描述資料庫對應、查詢資料庫,並以 XML 檔的形式傳回結果。 提供批注,以將 XSD 架構對應至資料庫數據表和數據行。 您可以針對 XSD 架構所建立的 XML 檢視來指定 XPath 查詢,並以 XML 的形式取得結果。
注意
在 Microsoft SQLXML 4.0 中,XSD 架構語言支援在 SQL Server 2000 (8.x) 中使用批注化 XML-Data Reduced (XDR) 架構語言所引進的批注。 批注式 XDR 在 SQLXML 4.0 中已被取代。
在關係資料庫的內容中,將任意 XSD 架構對應至關係型存放區很有用。 達成此目的的其中一種方法是標註 XSD 架構。 具有批注的 XSD 架構稱為 對應架構,其提供 XML 數據如何對應至關係型存放區的相關信息。 對應架構實際上就是關係型數據的 XML 檢視。 這些對應可用來擷取關係型數據做為 XML 檔。
註釋的命名空間
在 XSD 架構中,批註是使用命名空間 urn:schemas-microsoft-com:mapping-schema 來指定。 如下列範例所示,指定命名空間最簡單的方式是在 xsd:schema> 標記中<指定命名空間。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
...
</xsd:schema>
使用的命名空間前置詞是任意的。 在本檔中, sql 前置詞是用來表示註釋命名空間,以及區分此命名空間中的批註與其他命名空間中的批註。
批注式 XSD 架構的範例
在下列範例中,XSD 架構是由 Person.Contact 元素所組成<。> <Employee> 元素具有 ContactID 屬性和 <FirstName> 和< LastName> 子元素:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
type="xsd:string" />
<xsd:element name="LName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ConID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
批注會新增至這個 XSD 架構,以將其元素和屬性對應至資料庫數據表和數據行:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ConID"
sql:field="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
在對應架構中,<Contact> 元素會使用 sql:relation 批注,對應至範例AdventureWorks2022
資料庫中的 Person.Contact 數據表。 ConID、FName 和 LName 屬性會使用 sql:field 批注,對應至 Person.Contact 數據表中的 ContactID、FirstName 和 LastName 數據行。
這個標註的 XSD 架構會提供關係型數據的 XML 檢視。 您可以使用 XPath 語言來查詢此 XML 檢視。 XPath 查詢會傳回 XML 檔作為結果,而不是 SQL 查詢所傳回的數據列集。
注意
在對應架構中,指定關係型值(例如數據表名稱和數據行名稱)的區分大小寫取決於 SQL Server 是否使用區分大小寫的定序設定。 如需詳細資訊,請參閱定序和 Unicode 支援。
其他資源
您可以在下列網站上找到 XML 架構定義語言 (XSD)、XML 路徑語言 (XPath) 和可延伸樣式表單語言轉換 (XSLT) 的詳細資訊:
XML 架構第 0 部分:入門,W3C 建議 (https://www.w3.org/TR/xmlschema-0/)
XML 架構第 1 部分:結構、W3C 建議 (https://www.w3.org/TR/xmlschema-1/)
XML 架構第 2 部分:資料類型,W3C 建議 (https://www.w3.org/TR/xmlschema-2/)
XML 路徑語言 (XPath) (https://www.w3.org/TR/xpath)
XSL 轉換 (XSLT) (https://www.w3.org/TR/xslt)