次の方法で共有


XDR スキーマ内での属性の既定値の指定 (XDR スキーマ)

ms171970.note(ja-jp,SQL.90).gif重要 :
このトピックは、レガシ アプリケーションの参照用として用意されています。この機能は今後更新されません。新しい開発作業では、この機能の使用を避け、注釈付き XSD スキーマを使用して XML ビューを作成してください。詳細については、「注釈付き XSD スキーマの概要 (SQLXML 4.0)」を参照してください。既存の注釈付き XDR スキーマは、XSD スキーマに変換できます。詳細については、「注釈付き XDR スキーマから同等の XSD スキーマへの変換 (SQLXML 4.0)」を参照してください。

データベース列では既定値を割り当てることができます。同様に、XDR スキーマでは属性に既定値を設定できます。XDR スキーマで要素に既定値を割り当てることはできません。XDR スキーマでは、<AttributeType>default 属性を指定できます。

属性に関連付けられている列値が NULL の場合、その要素の該当するインスタンスに対して属性は返されません。しかし、<AttributeType>default 属性が指定されている場合は、その属性が指定の既定値で返されます。

たとえば、データベースからデータを抽出して XML ドキュメントに読み込むときに、属性値の 1 つが指定されていない場合は、XDR スキーマ内のその属性の既定値が使用されます。

ms171970.note(ja-jp,SQL.90).gifメモ :
既定値は、属性がない場合に検証パーサーで値として使用されるもので、返されるドキュメントに表示されないことがあります。
ms171970.note(ja-jp,SQL.90).gifメモ :
既定値は、使用されるパーサーでスキーマが認識される場合に使用されます。したがって、MSXML パーサーの場合は resolveExternals フラグが TRUE (既定) に設定されているか確認してください。TRUE に設定されていれば、パーサーでスキーマがフェッチされます。解析が済むと、XML ドキュメントに属性が含まれていたかどうかにかかわらず、各インスタンスには既定値が指定されている属性が含められます。既定値は、DOM によって提供されます。

次の例を使用した実際のサンプルを作成するには、特定の条件を満たす必要があります。詳細については、「SQLXML のサンプル実行のための必要条件」を参照してください。

A. XDR スキーマ内で属性に既定値を指定する

この例では、属性 Title に既定値 "XYZ" が設定されています。連絡先のレコードを取得するとき、称号のない連絡先には既定値が割り当てられます。

<?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="Person.Contact" >
    <AttributeType name="CID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />
    <AttributeType name="Title" default="XYZ"/>

    <attribute type="CID" sql:field="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="Title"  />
</ElementType>
</Schema>

スキーマに対してサンプル XPath クエリをテストするには

  1. 上のスキーマのコードをコピーして、テキスト ファイルに貼り付け、DefaultValueXdr.xml として保存します。

  2. 次のテンプレートをコピーして、テキスト ファイルに貼り付け、DefaultValueXdr.xml を保存したディレクトリに DefaultValueXdrT.xml として保存します。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="DefaultValueXdr.xml">
        /Person.Contact[@CID &gt; 1000 and @CID &lt; 1006]
      </sql:xpath-query>
    </ROOT>
    

    マッピング スキーマ (DefaultValueXdr.xml) に指定するディレクトリ パスは、テンプレートを保存するディレクトリに対する相対パスです。次のように、絶対パスを指定することもできます。

    mapping-schema="C:\MyDir\DefaultValueXdr.xml"
    
  3. SQLXML 4.0 テスト スクリプト (sqlxml4test.vbs) を作成し、それを使用してテンプレートを実行します。

    詳細については、「ADO を使用した、SQLXML 4.0 クエリの実行」を参照してください。

次に結果セットを示します。

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Contact CID="1001" FirstName="Terri" LastName="Duffy" /> 
  <Person.Contact CID="1002" FirstName="Roberto" LastName="Tamburello" /> 
  <Person.Contact CID="1003" FirstName="Michael" LastName="Sullivan" /> 
  <Person.Contact CID="1004" FirstName="Sharon" LastName="Salavaria" /> 
  <Person.Contact CID="1005" FirstName="Gail" LastName="Erickson" Title="Ms." /> 
</ROOT>

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手