Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド 12c (12.2.1.1.0) E77227-02 |
|
前へ |
次へ |
Extensible Markup Language (XML)ドキュメントからメタデータをインポートする方法について説明します。
Oracle BIサーバーでは、Oracle BIサーバーXML Gatewayを使用したアクセスと、XML ODBCドライバを使用したアクセスという、2つのXMLアクセス・モードがサポートされます。
この項では、次の項目について説明します。
Oracle BIサーバーでは、リポジトリの物理レイヤーのデータ・ソースとしてXMLデータ・ソースを使用できます。
XMLデータ・ソースへのアクセスに使用する方法に応じて、URLがデータ・ソースを表す場合があります。
データ・ソースは、次のとおりです。
XMLデータ・アイランドが格納された、インターネット(イントラネットやエクストラネットを含む)上の静的XMLファイルまたはHTMLファイル。次に例を示します。
tap://216.217.17.176/[DE0A48DE-1C3E-11D4-97C9-00105AA70303].XML
サーバー・サイトから生成される動的XML。次に例を示します。
tap://www.aspserver.com/example.asp
XMLデータ・アイランドが格納された、ローカル・ドライブまたはネットワーク・ドライブ上のXMLファイルまたはHTMLファイル。次に例を示します。
d:\xmldir\example.xml
d:\htmldir\island.htm
ローカルまたはネットワークXMLファイルのディレクトリ・パスを指定することも、ファイル名でワイルドカードとしてアスタリスク( * )を使用することもできます。ファイル名を指定せずにディレクトリ・パスを指定した場合(例: d:/xmldir
)、XML拡張子を持つすべてのファイルがインポートされます。次に例を示します。
d:\xmldir\
d:\xmldir\exam*.xml
d:\htmldir\exam*.htm
d:\htmldir\exam*.html
開始および終了の<table>
および</table>
タグにラップされた表を含むHTMLファイル。HTMLファイルは、インターネット上(イントラネットやエクストラネットなど)にある場合もあれば、ローカル・ドライブまたはネットワーク・ドライブにある場合もあります。詳細は、データ・ソースとしてのHTML表の使用についてを参照してください。
URLにリポジトリ変数またはセッション変数を含めると、URLに埋め込まれたユーザーIDおよびパスワードを許可するHTTPデータ・ソースがサポートされます。次に例を示します。
http://somewebserver/cgi.pl?userid=valueof(session_variable1)&password= valueof(session_variable2)
この機能を使用して、ランタイム・パラメータによって動的に決定される場所を含むXMLデータ・ソースを作成することもできます。変数の詳細は、Oracle BI Repositoryでの変数の使用を参照してください。
Oracle BIサーバーがローカル以外のファイル(ネットワーク・ファイルやインターネット上のファイルなど)にアクセスする必要がある場合は、それらのリモート・ファイルにアクセスするための十分なネットワーク権限がある、有効なユーザーIDとパスワードを使用してOracle BIサーバーを実行する必要があります。
Oracle BIサーバーXML Gatewayを使用すると、メタデータのインポート・プロセスによって、XMLドキュメントが、XMLファイル名の語幹を表名として使用し、XMLドキュメントの第2レベルの要素を行デリミタとして使用して、表形式にフラット化されます。
語幹は、接尾辞のないファイル名です。すべてのリーフ・ノードは、その表に属する列としてインポートされます。リーフ・ノードへの階層アクセス・パスもインポートされます。
Oracle BIサーバーXML Gatewayでは、XMLスキーマに格納されたメタデータ情報が使用されます。XMLスキーマはXMLドキュメント内に含まれているか、XMLドキュメントのルート要素内で参照されます。
使用可能なスキーマがない場合は、すべてのXMLデータがテキスト・データとしてインポートされます。リポジトリの作成時に、物理レイヤーの列のデータ型を変更して、スキーマで定義されている対応する列のデータ型を上書きできます。ゲートウェイによって、入力データが、物理レイヤーで指定した目的の型に変換されます。CAST
演算子を使用して、管理ツールのビジネス・モデルとマッピング・レイヤーでテキスト・データ型を他のデータ型にマップすることもできます。
Oracle BIサーバーXML Gatewayでは、次の項目はサポートされません。
XMLドキュメントに含まれる外部参照の解決(Oracle BIサーバーXML Gatewayによって生成されるXMLドキュメントの例のサンプル・ファイルに示されている外部XMLスキーマへの参照を除く)
Microsoft XMLスキーマに含まれる要素および属性の継承
混合コンテンツ・モデルの要素タイプ(<p> hello <b>Joe</b>, how are you doing?</p>のように、要素とCDATAが混在するXML要素など)
「物理」レイヤーでメタデータを既存のデータベースにインポートする場合は、「データベース・プロパティ」ダイアログの「機能」タブでCOUNT_STAR_SUPPORTEDオプションが選択されていることを確認します。COUNT_STAR_SUPPORTEDオプションを選択しないでメタデータをインポートすると、「行数の更新」オプションがデータベースの物理表の右クリック・メニューに表示されなくなります。
「論理モデルへのマップ」画面および「ウェアハウスに公開」画面は、ADFデータ・ソースでのみ使用することができます。
Oracle BIサーバーXML Gatewayを使用してXMLデータをインポートするには:
XMLデータをインポートしたら、接続プールの設定を調整する必要があります。詳細は、接続プールの作成または変更を参照してください。少なくとも、次の作業を実行する必要があります。
「接続プール」ダイアログの「一般」タブで、接続の名前および説明(オプション)を入力します。
「XML」タブをクリックして、URLリフレッシュ間隔や、タイムアウトするまでのURLのロードの待ち時間など、その他の接続プロパティを設定します。
一般に、XMLデータ・ソースはリアルタイムで頻繁に更新されるため、Oracle BIサーバーXML Gatewayデータ・ソースのリフレッシュ間隔を指定できます。デフォルトの問合せのタイムアウト間隔(URLのロードのタイムアウト)は15分です。『Oracle Business Intelligence Enterprise Editionシステム管理者ガイド』のXMLデータ・ソースのリフレッシュ間隔に関する項を参照してください。
これらの例は、Oracle BIサーバーXML Gatewayによって生成されるXMLドキュメントのサンプルおよび対応する列を示しています。
外部ファイルに格納されたXMLスキーマ
次のサンプルXMLデータ・ドキュメント(mytest.xml)は、外部ファイルに格納されたXMLスキーマを参照します。スキーマ・ファイルは、データ・ドキュメントの後に示します。これによって生成される、リポジトリにインポート可能なXMLスキーマ情報は最後に示します。
<?xml version="1.0"?> <test xmlns="x-schema:mytest_sch.xml"> <row> <p1>0</p1> <p2 width="5"> <p3>hi</p3> <p4> <p6>xx0</p6> <p7>yy0</p7> </p4> <p5>zz0</p5> </p2> </row> <row> <p1>1</p1> <p2 width="6"> <p3>how are you</p3> <p4> <p6>xx1</p6> <p7>yy1</p7> </p4> <p5>zz1</p5> </p2> </row> <row> <p1>a</p1> <p2 width="7"> <p3>hi</p3> <p4> <p6>xx2</p6> <p7>yy2</p7> </p4> <p5>zz2</p5> </p2> </row> <row> <p1>b</p1> <p2 width="8"> <p3>how are they</p3> <p4> <p6>xx3</p6> <p7>yy3</p7> </p4> <p5>zz2</p5> </p2> </row> </test>
対応するスキーマ・ファイルは次のとおりです。
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="test" content="eltOnly" order="many"> <element type="row"/> </ElementType> <ElementType name="row" content="eltOnly" order="many"> <element type="p1"/> <element type="p2"/> </ElementType> <ElementType name="p2" content="eltOnly" order="many"> <AttributeType name="width" dt:type="int" /> <attribute type="width" /> <element type="p3"/> <element type="p4"/> <element type="p5"/> </ElementType> <ElementType name="p4" content="eltOnly" order="many"> <element type="p6"/> <element type="p7"/> </ElementType> <ElementType name="p1" content="textOnly" dt:type="string"/> <ElementType name="p3" content="textOnly" dt:type="string"/> <ElementType name="p5" content="textOnly" dt:type="string"/> <ElementType name="p6" content="textOnly" dt:type="string"/> <ElementType name="p7" content="textOnly" dt:type="string"/> </Schema>
前述のXMLデータ・ドキュメント(mytest.xml)から生成される表の名前はmytest
、列名はp1
、p3
、p6
、p7
、p5
およびwidth
となります。
さらに、各列がドキュメントに出現するコンテキストを保持し、XML要素から派生した、異なるコンテキストで出現する同名の列を区別するために、World Wide Web ConsortiumのXPathに関する勧告に基づいて、列の完全修飾名の次のようなリストが生成されます。
//test/row/p1 //test/row/p2/p3 //test/row/p2/p4/p6 //test/row/p2/p4/p7 //test/row/p2/p5 //test/row/p2@width
XMLドキュメント内のネストされた表構造
次の例はさらに複雑なサンプルで、XMLドキュメントでネストされた表構造を使用する方法を示します。オプションで、外部スキーマ・ファイルへの参照を省略することもできます。その場合は、すべての要素がVarchar文字型として処理されます。
===Invoice.xml=== <INVOICE> <CUSTOMER> <CUST_ID>1</CUST_ID> <FIRST_NAME>Nancy</FIRST_NAME> <LAST_NAME>Fuller</LAST_NAME> <ADDRESS> <ADD1>507 - 20th Ave. E.,</ADD1> <ADD2>Apt. 2A</ADD2> <CITY>Seattle</CITY> <STATE>WA</STATE> <ZIP>98122</ZIP> </ADDRESS> <PRODUCTS> <CATEGORY> <CATEGORY_ID>CAT1</CATEGORY_ID> <CATEGORY_NAME>NAME1</CATEGORY_NAME> <ITEMS> <ITEM> <ITEM_ID>1</ITEM_ID> <NAME></NAME> <PRICE>0.50</PRICE> <QTY>2000</QTY> </ITEM> <ITEM> <ITEM_ID>2</ITEM_ID> <NAME>SPRITE</NAME> <PRICE>0.30</PRICE> <QTY></QTY> </ITEM> </ITEMS> </CATEGORY> <CATEGORY> <CATEGORY_ID>CAT2</CATEGORY_ID> <CATEGORY_NAME>NAME2</CATEGORY_NAME> <ITEMS> <ITEM> <ITEM_ID>11</ITEM_ID> <NAME>ACOKE</NAME> <PRICE>1.50</PRICE> <QTY>3000</QTY> </ITEM> <ITEM> <ITEM_ID>12</ITEM_ID> <NAME>SOME SPRITE</NAME> <PRICE>3.30</PRICE> <QTY>2000</QTY> </ITEM> </ITEMS> </CATEGORY> </PRODUCTS> </CUSTOMER> <CUSTOMER> <CUST_ID>2</CUST_ID> <FIRST_NAME>Andrew</FIRST_NAME> <LAST_NAME>Carnegie</LAST_NAME> <ADDRESS> <ADD1>2955 Campus Dr.</ADD1> <ADD2>Ste. 300</ADD2> <CITY>San Mateo</CITY> <STATE>CA</STATE> <ZIP>94403</ZIP> </ADDRESS> <PRODUCTS> <CATEGORY> <CATEGORY_ID>CAT22</CATEGORY_ID> <CATEGORY_NAME>NAMEA1</CATEGORY_NAME> <ITEMS> <ITEM> <ITEM_ID>122</ITEM_ID> <NAME>DDDCOKE</NAME> <PRICE>11.50</PRICE> <QTY>2</QTY> </ITEM> <ITEM> <ITEM_ID>22</ITEM_ID> <NAME>PSPRITE</NAME> <PRICE>9.30</PRICE> <QTY>1978</QTY> </ITEM> </ITEMS> </CATEGORY> <CATEGORY> <CATEGORY_ID>CAT24</CATEGORY_ID> <CATEGORY_NAME>NAMEA2</CATEGORY_NAME> <ITEMS> <ITEM> <ITEM_ID>19</ITEM_ID> <NAME>SOME COKE</NAME> <PRICE>1.58</PRICE> <QTY>3</QTY> </ITEM> <ITEM> <ITEM_ID>15</ITEM_ID> <NAME>DIET SPRITE</NAME> <PRICE>9.30</PRICE> <QTY>12000</QTY> </ITEM> </ITEMS> </CATEGORY> </PRODUCTS> </CUSTOMER> <CUSTOMER> <CUST_ID>3</CUST_ID> <FIRST_NAME>Margaret</FIRST_NAME> <LAST_NAME>Leverling</LAST_NAME> <ADDRESS> <ADD1>722 Moss Bay Blvd.</ADD1> <ADD2> </ADD2> <CITY>Kirkland</CITY> <STATE>WA</STATE> <ZIP>98033</ZIP> </ADDRESS> <PRODUCTS> <CATEGORY> <CATEGORY_ID>CAT31</CATEGORY_ID> <CATEGORY_NAME>NAMEA3</CATEGORY_NAME> <ITEMS> <ITEM> <ITEM_ID>13</ITEM_ID> <NAME>COKE33</NAME> <PRICE>30.50</PRICE> <QTY>20033</QTY> </ITEM> <ITEM> <ITEM_ID>23</ITEM_ID> <NAME>SPRITE33</NAME> <PRICE>0.38</PRICE> <QTY>20099</QTY> </ITEM> </ITEMS> </CATEGORY> <CATEGORY> <CATEGORY_ID>CAT288</CATEGORY_ID> <CATEGORY_NAME>NAME H</CATEGORY_NAME> <ITEMS> <ITEM> <ITEM_ID>19</ITEM_ID> <NAME>COLA</NAME> <PRICE>1.0</PRICE> <QTY>3</QTY> </ITEM> <ITEM> <ITEM_ID>18</ITEM_ID> <NAME>MY SPRITE</NAME> <PRICE>8.30</PRICE> <QTY>123</QTY> </ITEM> </ITEMS> </CATEGORY> </PRODUCTS> </CUSTOMER> </INVOICE>
生成されるXMLスキーマは、次の列名および対応する完全修飾名を持つ1つの表(INVOICE
)で構成されます。
列 | 完全修飾名 |
---|---|
ADD1 |
//INVOICE/CUSTOMER/ADDRESS/ADD1 |
ADD2 |
//INVOICE/CUSTOMER/ADDRESS/ADD2 |
CITY |
//INVOICE/CUSTOMER/ADDRESS/CITY |
STATE |
//INVOICE/CUSTOMER/ADDRESS/STATE |
ZIP |
//INVOICE/CUSTOMER/ADDRESS/ZIP |
CUST_ID |
//INVOICE/CUSTOMER/CUST_ID |
FIRST_NAME |
//INVOICE/CUSTOMER/FIRST_NAME |
LAST_NAME |
//INVOICE/CUSTOMER/LAST_NAME |
CATEGORY_ID |
//INVOICE/CUSTOMER/PRODUCTS/CATEGORY/CATEGORY_ID |
CATEGORY_NAME |
//INVOICE/CUSTOMER/PRODUCTS/CATEGORY/CATEGORY_NAME |
ITEM_ID |
//INVOICE/CUSTOMER/PRODUCTS/CATEGORY/ITEMS/ITEM/ITEM_ID |
NAME |
//INVOICE/CUSTOMER/PRODUCTS/CATEGORY/ITEMS/ITEM/NAME |
PRICE |
//INVOICE/CUSTOMER/PRODUCTS/CATEGORY/ITEMS/ITEM/PRICE |
QTY |
//INVOICE/CUSTOMER/PRODUCTS/CATEGORY/ITEMS/ITEM/QTY |
値を持つタグのみが列として抽出されます。XML問合せではタグの完全修飾名が生成されるため、適切な列が取得されていることを確認できます。
次に、INVOICE
表に対するサンプル問合せの結果を示します。
SELECT first_name, last_name, price, qty, name FROM invoice ------------------------------------------------------------ FIRST_NAME LAST_NAME PRICE QTY NAME ------------------------------------------------------------ Andrew Carnegie 1.58 3 SOME COKE Andrew Carnegie 11.50 2 DDDCOKE Andrew Carnegie 9.30 12000 DIET SPRITE Andrew Carnegie 9.30 1978 PSPRITE Margar Leverling 0.38 20099 SPRITE33 Margar Leverling 1.0 3 COLA Margar Leverling 30.50 20033 COKE33 Margar Leverling 8.30 123 MY SPRITE Nancy Fuller 0.30 SPRITE Nancy Fuller 0.50 2000 Nancy Fuller 1.50 3000 ACOKE Nancy Fuller 3.30 2000 SOME SPRITE ------------------------------------------------------------ Row count: 12
Oracle BIサーバーXML Gatewayでは、HTMLファイル内の表をデータ・ソースとして使用することもできます。HTMLファイルは、インターネット(イントラネットやエクストラネットを含む)にあるファイルを指すURLとして指定することも、ローカル・ドライブまたはネットワーク・ドライブにあるファイルとして指定することもできます。
<table>
タグと</table>
タグのペアで定義される表がHTML 4.0仕様のネイティブな構成メンバーであっても、Webデザイナは多くの場合、これをデータ構造としてではなく、特定の視覚効果を達成するための一般的なフォーマット方法として使用します。Oracle BIサーバーXML Gatewayは、<th>
タグと</th>
タグのペアで定義された、特定の列ヘッダーを含む表を現時点で最も効果的に抽出します。
特定の列ヘッダーを含まない表については、Oracle BIサーバーXML Gatewayは、単純な経験則をいくつか採用して、実際のデータ表であると思われるHTMLファイルの部分をできるだけ正しく特定します。
次に、1つの表を含むサンプルHTMLファイルを示します。
<html> <body> <table border=1 cellpadding=2 cellspacing=0> <tr> <th colspan=1>Transaction</th> <th colspan=2>Measurements</th> </tr> <tr> <th>Quality</th> <th>Count</th> <th>Percent</th> </tr> <tr> <td>Failed</td> <td>66,672</td> <td>4.1%</td> </tr> <tr> <td>Poor</td> <td>126,304</td> <td>7.7%</td> </tr> <tr> <td>Warning</td> <td>355,728</td> <td>21.6%</td> </tr> <tr> <td>OK</td> <td>1,095,056</td> <td>66.6%</td> </tr> <tr> <td colspan=1>Grand Total</td> <td>1,643,760</td> <td>100.0%</td> </tr> </table> </body> </html>
表名はHTMLファイルの名前から派生し、列名は、対応する列のヘッダー(<th>タグと</th>タグのペアで定義されるもの)をアンダースコアで区切って連結することにより形成されます。
サンプル・ファイルの名前を18.htm
とすると、その表名には18_0
が含まれ(そのHTMLファイルの最初の表であるため)、列名および対応する完全修飾名は次のようになります。
列 | 完全修飾名 |
---|---|
Transaction_Quality |
\\18_0\Transaction_Quality |
Measurements_Count |
\\18_0\Measurements_Count |
Measurements_Percent |
\\18_0\Measurements_Percent |
表の列ヘッダーが複数の行に出現する場合は、それらのヘッダー行の対応するフィールド・コンテンツを連結することにより列名が形成されます。
ヘッダー・タグのペアがない表の場合、Oracle BIサーバーXML Gatewayは、最初の行のフィールド値(<td>
タグと</td>
タグのペアで区切られたもの)が列名になると見なします。列には、出現する順に名前が付けられます(例: c0、c1、c2)。
その他のXMLの例については、XML ODBCを使用したXMLデータ・ソースからのメタデータのインポートおよびXMLドキュメントの例を参照してください。
ODBCを使用してメタデータをインポートする方法について説明します。
XML ODBCデータベース・タイプを使用すると、ODBCインタフェースを介してXMLデータ・ソースにアクセスできます。物理表の物理列を表すXML要素のデータ型は、XMLスキーマで定義されたXML要素のデータ型から派生します。
適切なXMLスキーマがない場合は、デフォルトの文字列データ型が使用されます。物理レイヤーにおけるデータ型の設定によって、XMLデータ・ソースで定義されたデータ型が上書きされることはありません。XMLスキーマがないXMLデータにアクセスする場合は、CAST
演算子を使用して、管理ツールのビジネス・モデルとマッピング・レイヤーでデータ型の変換を実行してください。
メタデータを物理レイヤーの既存のデータベースにインポートする場合、COUNT_STAR_SUPPORTEDオプションが「データベース・プロパティ」ダイアログの「機能」タブで選択されていることを確認します。COUNT_STAR_SUPPORTEDオプションを選択しないでメタデータをインポートする場合、「行数の更新」オプションはデータベースの物理表の右クリック・メニューに表示されません。
ODBCを使用してXMLデータをインポートするには:
この例では、Microsoft ADOの保存ファイル形式によるXML ODBCデータ・ソースを示します。
この項の例に、Microsoft ADOの保存ファイル形式によるXML ODBCデータ・ソースを示します。データとスキーマの両方を同じドキュメントに含めることができます。
例5-1 XML ODBCの例
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'> <s:Schema id='RowsetSchema'> <s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30' rs:updatable='true'> <s:AttributeType name='ShipperID' rs:number='1' rs:writeunknown='true' rs:basecatalog='Paint' rs:basetable='Shippers' rs:basecolumn='ShipperID'> <s:datatype dt:type='i2' dt:maxLength='2' rs:precision='5' rs:fixedlength='true' rs:benull='false'/> </s:AttributeType> <s:AttributeType name='CompanyName' rs:number='2' rs:writeunknown='true' rs:basecatalog='Paint' rs:basetable='Shippers' rs:basecolumn='CompanyName'> <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='40' rs:benull='false'/> </s:AttributeType> <s:AttributeType name='Phone' rs:number='3' rs:nullable='true' rs:writeunknown='true' rs:basecatalog='Paint' rs:basetable='Shippers' rs:basecolumn='Phone'> <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='24' rs:fixedlength='true'/> </s:AttributeType> <s:extends type='rs:rowbase'/> </s:ElementType> </s:Schema> <rs:data> <z:row ShipperID='1' CompanyName='Speedy Express' Phone='(503) 555-9831 '/> <z:row ShipperID='2' CompanyName='United Package' Phone='(503) 555-3199 '/> <z:row ShipperID='3' CompanyName='Federal Shipping' Phone='(503) 555-9931 '/> </rs:data> </xml>
次の様々な状況の例では、Oracle BIサーバーのXMLアクセス方法でそれらの状況がどのように処理されるかを説明します。
XMLドキュメントの83.xmlと8_sch.xmlは、同じ要素宣言を異なるスコープで使用する例を示しています。たとえば、<p3>を<p2>内および<p4>内で使用できます。
前述の例の要素<p3>は2つの異なるスコープに出現するため、インポート・プロセスで2回目にこの要素が出現したときに索引番号を追加することによって、各要素に異なる列名が付けられます。この場合、2回目に出現した要素はp3_1となります。さらに他のコンテキストで<p3>が出現する場合は、p3_2、p3_3となります。
XMLドキュメントの83.xmlと84.xmlは、複数のXMLファイルで同じスキーマ(8_sch.xml)を共有できることを示しています。
Internet Explorerバージョン5以降では、XMLアイランドと呼ばれる埋込みXMLフラグメントを含むHTMLドキュメントがサポートされます。XMLドキュメントのisland2.htmは、1つのドキュメントから複数のXMLデータ・アイランドおよび複数の表が生成される可能性のある単純な状況を示しています。XMLアイランドのインスタンスごとに表が1つずつ生成されます。表を区別するために、ドキュメント名に適切な索引が追加されます。island2.htmの場合、island2_0およびisland2_1という2つのXML表が生成されます。
83.xml
===83.xml=== <?xml version="1.0"?> <test xmlns="x-schema:8_sch.xml">| <row> <p1>0</p1> <p2 width="5" height="2"> <p3>hi</p3> <p4> <p3>hi</p3> <p6>xx0</p6> <p7>yy0</p7> </p4> <p5>zz0</p5> </p2> </row> <row> <p1>1</p1> <p2 width="6" height="3"> <p3>how are you</p3> <p4> <p3>hi</p3> <p6>xx1</p6> <p7>yy1</p7> </p4> <p5>zz1</p5> </p2> </row> </test>
8_sch.xml
===8_sch.xml=== <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <AttributeType name="height" dt:type="int" /> <ElementType name="test" content="eltOnly" order="many"> <AttributeType name="height" dt:type="int" /> <element type="row"/> </ElementType> <ElementType name="row" content="eltOnly" order="many"> <element type="p1"/> <element type="p2"/> </ElementType> <ElementType name="p2" content="eltOnly" order="many"> <AttributeType name="width" dt:type="int" /> <AttributeType name="height" dt:type="int" /> <attribute type="width" /> <attribute type="height" /> <element type="p3"/> <element type="p4"/> <element type="p5"/> </ElementType> <ElementType name="p4" content="eltOnly" order="many"> <element type="p3"/> <element type="p6"/> <element type="p7"/> </ElementType> <ElementType name="test0" content="eltOnly" order="many"> <element type="row"/> </ElementType> <ElementType name="p1" content="textOnly" dt:type="string"/> <ElementType name="p3" content="textOnly" dt:type="string"/> <ElementType name="p5" content="textOnly" dt:type="string"/> <ElementType name="p6" content="textOnly" dt:type="string"/> <ElementType name="p7" content="textOnly" dt:type="string"/> </Schema>
84.xml
===84.xml=== <?xml version="1.0"?> <test0 xmlns="x-schema:8_sch.xml"> <row> <p1>0</p1> <p2 width="5" height="2"> <p3>hi</p3> <p4> <p3>hi</p3> <p6>xx0</p6> <p7>yy0</p7> </p4> <p5>zz0</p5> </p2> </row> <row> <p1>1</p1> <p2 width="6" height="3"> <p3>how are you</p3> <p4> <p3>hi</p3> <p6>xx1</p6> <p7>yy1</p7> </p4> <p5>zz1</p5> </p2> </row> </test0>
Island2.htm
===island2.htm=== <HTML> <HEAD> <TITLE>HTML Document with Data Island</TITLE> </HEAD> <BODY> <p>This is an example of an XML data island in I.E. 5</p> <XML ID="12345"> test> <row> <field1>00</field1> <field2>01</field2> </row> <row> <field1>10</field1> <field2>11</field2> </row> <row> <field1>20</field1> <field2>21</field2> </row> </test> </XML> <p>End of first example.</p> <XML ID="12346"> <test> <row> <field11>00</field11> <field12>01</field12> </row> <row> <field11>10</field11> <field12>11</field12> </row> <row> <field11>20</field11> <field12>21</field12> </row> </test> </XML> <p>End of second example.</p> </BODY> </HTML>