注釈付き XSD スキーマの概要 (SQLXML 4.0)
適用対象: SQL Server Azure SQL データベース
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 として取得できます。
Note
Microsoft SQLXML 4.0 では、XSD スキーマ言語は、SQL Server 2000 (8.x) で注釈付き XML-Data Reduced (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注釈を使用して、サンプル AdventureWorks2022
データベースの Person.Contact テーブルにマップされます。 属性 ConID、FName、LName は、 sql:field 注釈を使用して、Person.Contact テーブルの ContactID、FirstName、および LastName 列にマップされます。
この注釈付きの XSD スキーマによって、リレーショナル データの XML ビューが提供されます。 この XML ビューには、XPath 言語を使用してクエリを実行できます。 XPath クエリを実行すると、SQL クエリによって返される行セットではなく、XML ドキュメントが返されます。
Note
マッピング スキーマに指定するリレーショナル値 (テーブル名や列名など) の大文字小文字の区別は、SQL Server で使用される照合順序の、大文字小文字の区別の設定によって変わります。 詳細については、「照合順序および Unicode のサポート」を参照してください。
その他のリソース
XML スキーマ定義言語 (XSD)、XML パス言語 (XPath)、Extensible Stylesheet Language Transformations (XSLT) の詳細については、次の Web サイトを参照してください。
XML スキーマ パート 0: Primer、W3C Recommendation (https://www.w3.org/TR/xmlschema-0/)
XML スキーマ パート 1: 構造体、W3C に関する推奨事項 (https://www.w3.org/TR/xmlschema-1/)
XML スキーマ パート 2:Datatypes、W3C Recommendation (https://www.w3.org/TR/xmlschema-2/)
XML パス言語 (XPath) (https://www.w3.org/TR/xpath)
XSL 変換 (XSLT) (https://www.w3.org/TR/xslt)
参照
注釈付きスキーマのセキュリティに関する考慮事項 (SQLXML 4.0)
注釈付き XDR スキーマ (SQLXML 4.0 では非推奨)