注釈付き 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 で使用される照合順序の、大文字小文字の区別の設定によって変わります。詳細については、「SQL Server 照合順序の使用」を参照してください。 |
その他のリソース
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)