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/XMLSchemaの XML スキーマ名前空間仕様から派生します。
XSD スキーマへの注釈
XSD スキーマは、データベースへのマッピングを記述し、データベースにクエリを実行し、XML ドキュメントの形式で結果を返す注釈と共に使用できます。 XSD スキーマをデータベースのテーブルと列にマップするための注釈が用意されています。 XSD スキーマによって作成された XML ビューに対して XPath クエリを指定して、データベースにクエリを実行し、XML として結果を取得できます。
注
Microsoft SQLXML 4.0 では、XSD スキーマ言語は、SQL Server 2000 の注釈付き XML-Data 縮小 (XDR) スキーマ言語で導入された注釈をサポートしています。 注釈付き XDR は、SQLXML 4.0 では非推奨です。
リレーショナル データベースのコンテキストでは、任意の XSD スキーマをリレーショナル ストアにマップすると便利です。 これを実現する 1 つの方法は、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
注釈を使用して、サンプル AdventureWorks データベースの Person.Contact テーブルにマップされます。 ConID、FName、LName の属性は、 sql:field
注釈を使用して、Person.Contact テーブルの ContactID、FirstName、および LastName 列にマップされます。
この注釈付き XSD スキーマは、リレーショナル データの XML ビューを提供します。 この XML ビューは、XPath 言語を使用して照会できます。 XPath クエリは、SQL クエリによって返される行セットではなく、結果として XML ドキュメントを返します。
注
マッピング スキーマでは、指定されたリレーショナル値 (テーブル名や列名など) の大文字と小文字の区別は、SQL Server で大文字と小文字が区別される照合順序の設定を使用するかどうかによって異なります。 詳細については、「 Collation and Unicode Support」を参照してください。
その他のリソース
XML スキーマ定義言語 (XSD)、XML パス言語 (XPath)、拡張スタイルシート言語変換 (XSLT) の詳細については、次の Web サイトを参照してください。
XML スキーマ パート 0: Primer、W3C Recommendation (http://www.w3.org/TR/xmlschema-0/)
XML スキーマ パート 1: 構造体、W3C に関する推奨事項 (http://www.w3.org/TR/xmlschema-1/)
XML スキーマ パート 2:Datatypes、W3C Recommendation (http://www.w3.org/TR/xmlschema-2/)
XML パス言語 (XPath) (http://www.w3.org/TR/xpath)
XSL 変換 (XSLT) (http://www.w3.org/TR/xslt)
こちらもご覧ください
注釈付きスキーマのセキュリティに関する考慮事項 (SQLXML 4.0)
注釈付き XDR スキーマ (SQLXML 4.0 では非推奨)