您可以使用 XML 結構描述定義 (XSD) 語言來建立關聯式資料的 XML 檢視。 接著,您就可以使用 XML 路徑語言 (XPath) 查詢來查詢這些檢視。 這類似於使用 CREATE VIEW 陳述式來建立檢視,然後針對檢視指定 SQL 查詢。
XML 結構描述會描述 XML 文件的結構,而且也會描述文件中資料的各種條件約束。 針對結構描述指定 XPath 查詢時,傳回之 XML 文件的結構取決於執行 XPath 查詢所針對的結構描述。
在 XSD 結構描述中,<xsd:schema> 元素會括住整個結構描述。所有元素宣告都必須包含在 <xsd:schema> 元素內部。 您可以描述定義結構描述所在之命名空間和結構描述所使用之命名空間的屬性 (Attribute),做為 <xsd:schema> 元素的屬性 (Property)。
有效的 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> 元素衍生自 XML 結構描述命名空間規格:http://www.w3.org/2001/XMLSchema。
XSD 結構描述的註解
您可以使用 XSD 結構描述搭配描述資料庫對應的註解、查詢資料庫,並且以 XML 文件的格式傳回結果。 提供註解的目的是要將 XSD 結構描述對應至資料庫資料表和資料行。 您可以針對 XSD 結構描述所建立的 XML 檢視指定 XPath 查詢來查詢資料庫,並以 XML 的格式取得結果。
[!附註]
在 Microsoft SQLXML 4.0 中,XSD 結構描述語言支援 SQL Server 2000 中註解式 XML-Data Reduced (XDR) 結構描述語言所導入的註解。 註解式 XDR 在 SQLXML 4.0 中已被取代。
在關聯式資料庫的內容中,將任意的 XSD 結構描述對應到關聯式存放區相當實用。 封存的其中一種方式是為 XSD 結構描述註解。 包含註解的 XSD 結構描述稱為「對應結構描述」(Mapping Schema),其中提供有關如何將 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 註解來對應至 AdventureWorks 範例資料庫中的 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 結構描述第零部:W3C 入門建議事項 (http://www.w3.org/TR/xmlschema-0/) (英文)
XML 結構描述第一部:W3C 結構建議事項 (http://www.w3.org/TR/xmlschema-1/) (英文)
XML 結構描述第二部:W3C 資料類型建議事項 (http://www.w3.org/TR/xmlschema-2/) (英文)
XML 路徑語言 (XPath) (http://www.w3.org/TR/xpath) (英文)
XSL 轉換 (XSLT) (http://www.w3.org/TR/xslt) (英文)