註解式 XDR 結構描述簡介 (在 SQLXML 4.0 中已被取代)
重要事項 |
---|
這個主題是舊版應用程式的參考。這項功能未來將不會繼續開發,請避免在新的開發工作中使用此功能,而改用註解式 XSD 結構描述建立 XML 檢視。如需詳細資訊,請參閱<註解式 XSD 結構描述簡介 (SQLXML 4.0)>。您可以將現有的註解式 XDR 結構描述轉換為 XSD 結構描述。如需詳細資訊,請參閱<將註解式 XDR 結構描述轉換為等效 XSD 結構描述 (SQLXML 4.0)>。 |
您可以使用 XDR (XML-Data Reduced) 結構描述建立關聯式資料的 XML 檢視。接著,可以使用 XPath 查詢來查詢這些檢視。這類似於使用 CREATE VIEW 陳述式來建立檢視,然後針對檢視指定 SQL 查詢。
描述 XML 文件的結構以及文件中資料之各種條件約束的 XML 結構描述。針對結構描述指定 XPath 查詢時,傳回之 XML 文件的結構取決於執行 XPath 查詢所依據的結構描述。
在 Microsoft SQL Server 2000 中首次推出 XML-Data Reduced (XDR) 語言來建立 XML 結構描述。當時,XDR 具有彈性而且可以克服文件類型定義 (DTD) 的某些限制,也可以用來描述 XML 文件結構。XDR 結構描述與 DTD 不同,前者會使用與 XML 文件相同的語法描述文件的結構。此外,在 DTD 中,所有資料內容都是字元資料。XML 語言結構描述可讓您指定元素或屬性的資料類型。
在 XDR 結構描述中,<Schema> 元素會括住整個結構描述。您可以描述定義結構描述所在結構描述名稱和命名空間的屬性 (Attribute),做為 <Schema> 元素的屬性 (Property)。在 XDR 語言中,所有元素宣告都必須包含在 <Schema> 元素中。
最小的 XDR 結構描述是:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
...
</Schema>
<Schema> 元素衍生自 xml-data 命名空間 (urn:schemas-microsoft-com:xml-data)。
[!附註]
本文件集假設您已熟悉 XML-Data 語言。
XDR 結構描述的註解
您可以搭配描述資料庫對應註解使用 XDR 結構描述來查詢資料庫,並以 XML 文件的格式傳回結果。SQL Server 2000 首先推出數個註解,您可以使用這些註解將 XDR 結構描述對應到 SQL 資料庫資料表和資料行。系統可以根據 XDR 結構描述所建立的 XML 檢視指定 XPath 查詢來查詢資料庫,並取得結果做為 XML。
這是撰寫 SQL 查詢更複雜處理序的替代方式,該查詢會將 FOR XML EXPLICIT 模式用於描述 XML 文件結構做為查詢的一部分。不過,若要針對對應結構描述克服大部分的 XPath 查詢限制,請搭配 FOR XML EXPLICIT 模式使用 SQL 查詢,以 XML 文件的格式傳回結果。
如果您有公用 XDR 結構描述 (例如,Microsoft BizTalk 結構描述),您可以執行下列任一項:
撰寫 FOR XML EXPLICIT 模式查詢,因此,針對公用 XDR 結構描述產生的資料是有效的,不過,撰寫 FOR XML EXPLICIT 查詢可能會相當繁雜。
製作公用 XDR 結構描述的私有複本。接著,將註解加入到此私有複本以產生對應結構描述。您可以針對對應的結構描述指定 XPath 查詢。因此,查詢所產生的是公用結構描述命名空間中的資料。建立註解式結構描述並針對這些結構描述指定 XPath 查詢比撰寫複雜的 FOR XML EXPLICIT 查詢程序簡單得多。此圖例顯示此程序。
對應結構描述
在關聯式資料庫的內容中,將任意的 XDR 結構描述對應到關聯式存放區相當實用。封存的其中一種方式是為 XDR 結構描述註解。包含註解的 XDR 結構描述也就是 mapping schema,其中提供有關如何將 XML 資料對應到關聯式存放區的資訊。實際上,對應結構描述就是關聯式資料的 XML 檢視。這些對應可用於擷取關聯式資料做為 XML 文件。
SQL Server 2000 推出數個可在 XDR 結構描述中使用的註解,將元素和屬性對應到資料庫資料表和資料行。您可以針對對應的結構描述 (XML 檢視) 使用 XPath (XML 路徑) 指定查詢。對應結構描述會描述所產生的文件結構。
註解的命名空間
在 XDR 結構描述中,系統會使用此命名空間指定註解:urn:schemas-microsoft-com:xml-sql。
下列範例顯示指定命名空間最簡單的方式就是在 <Schema> 標籤中指定它。對於 urn:schemas-microsoft-com:xml-sql 命名空間,註解必須是符合命名空間的。
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
>
...........
</Schema>
所使用的命名空間前置詞是任意的。在此文件集中,sql 前置詞用於代表註解命名空間,並區別此命名空間與其他命名空間中的註解。
資料類型的命名空間
XML 結構描述可讓您指定元素或屬性的資料類型。系統會使用此命名空間指定資料類型:urn:schemas-microsoft-com:datatypes。
這是包含命名空間宣告的最小 XDR 結構描述:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
...
</Schema>
所使用的命名空間前置詞是任意的。在此文件集中,dt 前置詞用於代表資料類型命名空間,並區別此命名空間與其他命名空間中的註解。
<Schema> 元素衍生自 xml-data 命名空間:urn:schemas-microsoft-com:xml-data。
XDR 結構描述的範例
此範例示範如何將註解加入到 XDR 結構描述。此 XDR 結構描述是由 <Contacts> 元素和 CID、FName 以及 LName 屬性所組成。
<?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="Contacts" >
<AttributeType name="CID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CID" />
<attribute type="FName" />
<attribute type="LName" />
</ElementType>
</Schema>
現在,註解已經加入到此 XDR 結構描述中,以便將其元素和屬性對應到 AdventureWorks2008R2 範例資料庫之 SQL 資料表和資料行的名稱。這是註解式 XDR 結構描述:
<?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="Contacts" sql:relation="Person.Person" >
<AttributeType name="CID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CID" sql:field="BusinessEntityID" />
<attribute type="FName" sql:field="FirstName" />
<attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>
在對應結構描述中,<Contacts> 元素會使用 sql:relation 註解,對應到 Person.Person資料表。CID、FName 和 LName 屬性會使用 sql:field 註解對應至 Person.Person 資料表中的 BusinessEntityID、FirstName 和 LastName 資料行。
此註解式 XDR 結構描述會提供關聯式資料的 XML 檢視。使用 XPath (XML 路徑) 語言可以查詢這個 XML 檢視。結果,此查詢會傳回 XML 文件,而不是 SQL 查詢所傳回的資料列集。
[!附註]
在對應結構描述中,指定的關聯式值 (例如資料表名稱和資料行名稱) 會區分大小寫。