注釈付き 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 ドキュメント構造の記述にも使用できました。DTD と異なるのは、XDR スキーマは、XML ドキュメントと同じ構文を使用してドキュメントの構造を指定する点です。また、DTD ではすべてのデータの内容が文字データですが、XDR 言語スキーマでは、要素または属性のデータ型を指定できます。

XDR スキーマでは、スキーマ全体を <Schema> 要素で囲みます。<Schema> 要素のプロパティとして属性を指定し、スキーマ名やスキーマが属する名前空間を定義できます。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 クエリの制限の多くを解消するには、SQL クエリで FOR XML EXPLICIT モードを使用して、結果を XML ドキュメントの形式で返します。

Microsoft BizTalk スキーマなどのパブリック XDR スキーマでは、次のいずれかを実行できます。

  • 生成されるデータがパブリック XDR スキーマに対して有効になるよう、FOR XML EXPLICIT モードのクエリを記述する。ただし、FOR XML EXPLICIT クエリの記述は複雑です。

  • パブリック XDR スキーマのプライベート コピーを作成し、このプライベート コピーに注釈を追加して、マッピング スキーマを生成する。このマッピング スキーマに対しては XPath クエリを指定でき、クエリを実行すると、パブリック スキーマの名前空間にデータが生成されます。注釈付きスキーマを作成し、それに対して XPath クエリを指定する方法は、複雑な FOR XML EXPLICIT クエリを記述するよりもはるかに簡単です。次の図は、このプロセスを示しています。

スキーマのコピーを使用した注釈の作成

マッピング スキーマ

リレーショナル データベースのコンテキストでは、任意の XDR スキーマをリレーショナル ストアにマップすると便利です。これを実行する方法の 1 つは、XDR スキーマに注釈を付けることです。注釈付き XDR スキーマは、マッピング スキーマと呼ばれ、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 というプレフィックスを使用します。

データ型の名前空間

XDR スキーマでは、要素または属性のデータ型を指定することができます。データ型は名前空間 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>

このマッピング スキーマでは、sql:relation 注釈により、<Contacts> 要素が Person.Personテーブルにマップされます。また、sql:field 注釈により、属性 CIDFName、および LName が Person.Person テーブルの BusinessEntityID、FirstName、および LastName 列にそれぞれマップされます。

この注釈付き XDR スキーマによって、リレーショナル データの XML ビューが提供されます。この XML ビューに対しては、XPath (XML パス) 言語を使用してクエリを実行でき、クエリを実行すると、SQL クエリによって返される行セットではなく、XML ドキュメントが返されます。

注意

マッピング スキーマでは、テーブル名や列名などのリレーショナル値の指定で大文字と小文字が区別されます。