注釈付き 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/XMLSchema の XML スキーマ名前空間の仕様に基づいたものです。
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 スキーマをリレーショナル ストアにマップすると便利です。 これを実行する 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>
このマッピング スキーマでは、sql:relation 注釈によって、<Contact> 要素がサンプル データベース AdventureWorks の Person.Contact テーブルにマップされます。 また、sql:field 注釈によって、属性 ConID、FName、LName が Person.Contact テーブルの ContactID 列、FirstName 列、LastName 列にそれぞれマップされます。
この注釈付きの XSD スキーマによって、リレーショナル データの XML ビューが提供されます。 この XML ビューには、XPath 言語を使用してクエリを実行できます。 XPath クエリを実行すると、SQL クエリによって返される行セットではなく、XML ドキュメントが返されます。
注 |
---|
マッピング スキーマに指定するリレーショナル値 (テーブル名や列名など) の大文字小文字の区別は、SQL Server で使用される照合順序の、大文字小文字の区別の設定によって変わります。 詳細については、「照合順序と Unicode のサポート」を参照してください。 |
その他のリソース
XML スキーマ定義言語 (XSD)、XML パス言語 (XPath)、Extensible Stylesheet Language Transformations (XSLT) の詳細については、次の Web サイトを参照してください。
W3C Recommendation、「XML Schema Part 0: Primer」(http://www.w3.org/TR/xmlschema-0/)
W3C Recommendation、「XML Schema Part 1: Structures」(http://www.w3.org/TR/xmlschema-1/)
W3C Recommendation、「XML Schema Part 2:Datatypes」(http://www.w3.org/TR/xmlschema-2/)
XML Path Language (XPath) (http://www.w3.org/TR/xpath)
XSL Transformations (XSLT) (http://www.w3.org/TR/xslt)