次の方法で共有


sql:target-namespace を使用した、対象名前空間の指定 (XDR スキーマ)

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

sql:target-namespace 注釈を使用すると、要素や属性を、既定の名前空間から別の名前空間に置くことができます。sql:target-namespace 属性は、XDR スキーマの <Schema> タグにのみ追加できます。

sql:target-namespace の値は名前空間 URI (Uniform Resource Identifier) で、マッピング スキーマに指定された要素や属性を生成するために使用されます。この URI は、既定の名前空間のすべての要素と属性に適用されます。このスキーマに対するクエリで返される XML ドキュメントには、xmlns:prefix="uri" 宣言が含まれ、これに従って要素や属性の名前にプレフィックスが付けられます。使用される URI は、sql:target-namespace 注釈の値が基になります。ただし、プレフィックスは任意に生成されます。このプレフィックスは、スキーマ内で使用されている場合でも、スキーマのどの値にも対応しません。

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

A. 対象名前空間を指定する

この例では、sql:target-namespace 注釈を使用して、対象名前空間が指定されています。この結果、既定の名前空間に対応していたすべての要素と属性は、対象名前空間 (MyNamespace) にリダイレクトされます。

<?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"
        sql:target-namespace="urn:MyNamespace">
<ElementType name="Sales.SalesOrderHeader" >
   <AttributeType name="SalesOrderID" />
   <attribute type="SalesOrderID"/>
</ElementType>
<ElementType name="Sales.Customer" >
   <AttributeType name="CustomerID" />
   <attribute type="CustomerID" />
   <element type="Sales.SalesOrderHeader" >
      <sql:relationship 
            key="CustomerID" 
            foreign-key="CustomerID" 
            key-relation="Sales.Customer" 
            foreign-relation="Sales.SalesOrderHeader" />
   </element>
</ElementType>
</Schema>

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

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

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="TargetNS-Xdr.xml" 
                       xmlns:x="urn:MyNamespace" >
        x:Sales.Customer[@CustomerID=1]
      </sql:xpath-query>
    </ROOT>
    

    このテンプレートの XPath クエリでは、名前空間 "MyNamespace" に定義されているすべての <Customer> 要素が要求されます。テンプレートでは、この名前空間にプレフィックス x がバインドされています。

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <y0:Sales.Customer xmlns:y0="urn:MyNamespace" CustomerID="1">
    <y0:Sales.SalesOrderHeader SalesOrderID="43860" /> 
    <y0:Sales.SalesOrderHeader SalesOrderID="44501" /> 
    <y0:Sales.SalesOrderHeader SalesOrderID="45283" /> 
    <y0:Sales.SalesOrderHeader SalesOrderID="46042" /> 
  </y0:Sales.Customer>
</ROOT>

生成されるプレフィックスは不定ですが、同一の名前空間にマップされることに注意してください。

参照

関連項目

SQLXML 4.0 での XPath クエリの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手