ADO.NET Provider for XML

Build 24.0.9062

カラム定義

カラムの基本属性は、カラム名、データ型、カラムが主キーかどうか、およびXPath です。本製品 は、XPath を使って階層構造データのノードを取得します。

スキーマファイルのapi:info ブロックにカラム属性をマークアップします。以下の例で示すように、other:xPath プロパティにXPath を設定します。

<api:info title="Persons" desc="Parse the OData Persons feed.">
    <attr name="ID"           xs:type="int" key="true" readonly="false"   other:xPath="content/properties/ID" />
    <attr name="EmployeeID"   xs:type="int"            readonly="true"    other:xPath="content/properties/EmployeeID" />
    <attr name="Name"         xs:type="string"         readonly="false"   other:xPath="content/properties/Name" />
    <attr name="TotalExpense" xs:type="double"         readonly="true"    other:xPath="content/properties/TotalExpense" />
    <attr name="HireDate"     xs:type="datetime"       readonly="true"    other:xPath="content/properties/HireDate" />
    <attr name="Salary"       xs:type="int"            readonly="true"    other:xPath="content/properties/Salary" />
  </api:info>
次のセクションでは、XPath を使用してカラムと行を抽出する方法について詳しく説明します。完全なスキーマでカラム定義を見るには、スキーマのカスタマイズ を参照してください。

カラムXPath の定義

other:xPath プロパティは、カラム値を取得するXPath を指定するために使われます。

絶対パスは'/' で始まり、ネストされたデータへのフルXPath を含みます。

<attr name="ID"           xs:type="int" key="true" other:xPath="/feed/entry/content/properties/ID" /> 

インデックスされたXPath 値は、同じ名前の複数の要素が同じレベルにネストされている場合、XML ドキュメント内の要素を指定するために使われます。インデックスはゼロベースです。

<api:info>
  <attr name=PhoneNumber1 xs:type="string" other:xPath="Person/PhoneNumber[0]"/>
  <attr name=PhoneNumber2 xs:type="string" other:xPath="Person/PhoneNumber[1]"/>
</api:info>

Notes

  • XPath およびカラム名(XPath の生成に使われた場合)は、大文字・小文字の区別があります。
  • XPath の外に指定されたパスは、最後にプッシュされた行を除いて(その場合は見つかったすべてのパスがプッシュされます)、行(XPath )が見つかる前に見つかった場合にのみ取得されます。これは、各行がストリーミング方式でプッシュされているためです。

行XPath の定義

行XPath は、同じ階層で繰り返す要素へのパスを指定します。これは本製品 が行に分割するオブジェクト配列です。DataModel をFlattenedDocuments またはRelational に設定すると、複数のXPath をセミコロン区切りのリストで指定できます。これらのデータモデリングストラテジーのガイドについては、階層データの解析 を参照してください。

接続文字列でXPath プロパティを定義するか、行XPath を個々のスキーマの属性として定義できます。api:set キーワードを使用して、スキーマの行のXPath を定義します。DataModel をFlattenedDocuments またはRelational に設定すると、複数のXPath をセミコロン区切りのリストで指定できます。

<api:set attr="XPath" value="/root/people;/root/people/vehicles;/root/people/vehicles/maintenance" /> 

ワイルドカードのXPath はすべてのXPath が同じ階層にあるが異なる名前を含む場合には有効です。

<api:set  attr="XPath" value="/feed/*" />

カラム値形式を定義

other:valueFormat プロパティを"aggregate" に設定して、カラムを集計として識別することができます。

  • aggregate オプションは、指定されたXPath において見出されるXML 集計を返します。例えば、次を考えてみましょう:
        <repeat>
        <name>TestAggregate</name>
        <myobjcol1>
          <object1>myData</object1>
          <object1>myData1</object1>
          <object2>myData2</object2>
        </myobjcol1>
        </repeat>
        
    次の例では、myobjcol1 要素をMyObjCol1 という名前のカラムに抽出します。
        <api:info>
          <attr name="MyObjCol1" xs:type="string" other:xPath="myobjcol1" other:valueFormat="aggregate"/>
        </api:info>
        <api:set attr="XPath" value="/repeat"/>
        
    カラム値は次のようになります。
        <myobjcol1>
          <object1>myData</object1>
          <object1>myData1</object1>
          <object2>myData2</object2>
        </myobjcol1>
        

SELECT 抽出条件のクエリパラメータへのマッピング

一部のAPI では、クエリパラメータを指定することでリクエスト結果をフィルタリングできます。このパラメータがWHERE 句にマップされている場合は、other:filter プロパティを使用してこのマッピングをプログラムできます。

  • other:filter は、<parameter name>:<operator list> のセミコロン区切りリストです。<parameter name> はクエリパラメータの名前、<operator list> はマッピングに使用される演算子のカンマ区切りのリストです。有効な演算子は<、<=、=、>、>=、およびLIKE です。

以下は、2つのクエリパラメータ'modifiedSince' および'modifiedBefore' の例です。'modifiedAt' カラムに基づいて結果をフィルタ処理します。

    <attr name="ModifiedAt"           xs:type="datetime" readonly="false"   other:xPath="content/properties/modifiedAt" other:filter="modifiedBefore:<;modifiedSince:>,>=,=" />
    

この例では、次のクエリステートメントを使用します。

SELECT * 
FROM <table> 
WHERE modifedAt < '<datetime>'
そして、クエリパラメータ'&modifiedBefore=<url encoded datetime>' をURL に追加するリクエストを生成します。

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062