Office XPのXML度を探る(後編)
新野淳一
@IT編集局
2001/7/5
「Office XPのXML度を探る」の前編では、XML機能を裏で支えるMSXML3についての解説と、ExcelのXML機能について紹介してきた。後編にあたる今回は、AccessがどのようにXML文書を扱うのかと、Office XPの開発環境について触れる。
XML Schemaに早くも対応したAccess |
Access 2002では、従来データベースエンジンに利用していたJetエンジンに加え、SQL Server 2000 Desktop Engineを搭載したのが大きなトピックだろう。そして、XMLデータのインポートとエクスポートも新しい機能として加わっている。
この2つの新機能は、Accessを企業システムに結合させるのに大きな意味を持つだろう。SQL Server 2000と完全に互換性のあるデータベースエンジンを利用することで、同製品を利用したデータの相互運用性は飛躍的に高まるはずだ。必要な部分だけを手元のPCにレプリケーションして処理する、といったことが非常に容易になる。と同時に、SQL Server 2000でないデータベースとは、XML文書形式でのデータのやりとりで連携できるようになる。
そのAccessが備えるXML文書のインポート/エクスポート機能について探ってみよう。
■テーブルの内容をエクスポート
まずは、Access 2002のエクスポート機能を紹介しよう。エクスポート機能では、データベースの内容を、Excel形式、テキスト形式、Lotus 1-2-3、Paradox、リッチテキスト形式、HTML形式などで保存することができる。この形式の1つに、XML文書の形式が含まれているわけだ。
XML文書形式でのエクスポートは、特定のテーブルをXML文書形式にするだけでなく、ビュー、フォーム、レポート、そしてストアドプロシージャ、関数などもXML文書形式にできる。まずはテーブルのエクスポート機能から。
最初に、下記のようなシンプルなテーブルのエクスポートを試してみよう。このテーブルEmployeesをXML形式で保存してみる。
すると、下記のようなXML文書が保存される。
<?xml version="1.0" encoding="UTF-8"?> |
ここから分かるのは、Accessはテーブルの内容を次のような形式でXML文書へ変換している、ということだ。
<dataroot> |
試しに、サンプルデータベース「Northwind」から、得意先テーブルをXML文書としてエクスポートしたときのXML文書も見てみよう。元のテーブルを下記に示す。
ここから生成されたのが、下記のXML文書だ。
<?xml version="1.0" encoding="UTF-8"?> |
複雑なテーブルをXML文書形式にしても、まったく同じ形式で出力されていることが分かる。
■スキーマ情報をXML Schemaで記述
さて、XML文書形式でエクスポートする場合、下記のような画面が現れて、どのような種類のXML文書を出力するのかが指定できる。1つ目の「データ(XML)」とは、いま説明した元のテーブルの内容を含んだXML文書のことだ。次の項目「データスキーマ」は、XSD形式でテーブルのスキーマ情報も出力できることを意味する。つまり、Accessのエクスポート機能はテーブルのデータだけでなく、構造(スキーマ)をXML文書にして取り出すこともできるわけだ。
XSD形式とは、XML Schema Definition Languageによって記述されたファイルのこと。XML Schemaは、W3Cによって勧告されたXMLスキーマ言語の1つであり、今後主流になるスキーマ言語だといわれている。このデータスキーマファイルとは、Accessのテーブルのスキーマ情報を、XML SchemaというXML文書のスキーマ言語によって表現している。ちなみに、見て分かるとおり、このXSD文書もXML形式の文書として記述されている。
XSDによって記述されたデータスキーマのファイルを見てみよう。先ほど例に出したEmployeesテーブルのスキーマは、Access上で見ると下記のようになっている。
このデータスキーマを、XSD形式で出力したものが下記のリストだ。
<?xml version="1.0" encoding="UTF-8"?> |
赤字で示したところに、文字列型で最大文字長が255だと記述されている。テーブルのスキーマが、XML Schemaで記述されていることが分かるだろう。
つまりこれは、あるスキーマをXML Schemaで、(すなわちXSDを利用して)表現したいときに、AccessをXML Schemaの出力ツールとして使うことができることを意味している。上記の例を見れば分かるように、XML Schemaの記述は結構複雑で面倒だ。そんなときは、Accessでテーブルを定義し、列に数値型や文字列型などの属性を付けたら、それをXML文書形式でエクスポートすればいい。簡単にXML Schema形式の文書を得ることができる。
■フォームやレポートもXML形式で出力
さて、前述の画面ではデフォルトでオフになっていた「データ(XSL)のプレゼンテーション」についても説明しよう。このオプションをオンにすると、下記の4つのファイルが生成される。
- employees.xml (テーブル内のデータが含まれているXML文書)
- employees.xsd (テーブルのスキーマをXML Schemaで表現したXML文書)
- employees.xsl (XML文書にスタイルを与えるためのスタイルシート)
- employees.html (スタイルシートによってスタイルが与えられたXML文書を、Webブラウザで表示するためのスクリプトが含まれたHTML文書)
テーブルの内容がWebブラウザ上に表示された。これはHTML文書にこのようなデータが書き込まれているのではなく、このHTML文書からXML文書とXSLTを呼び出して、Webブラウザ上に表示している。
ただし、普通のテーブルをエクスポートするのでは、上記のように表形式で表示されるだけであり、あまり面白くない。AccessにはフォームやレポートもXML文書形式にエクスポートできるため、フォームをXML文書形式でエクスポートしてみよう。
まず、Accessにあらかじめ用意されているデモンストレーションデータベース「Northwind」から、フォーム「得意先」を開いてみる。このフォームは下記のような画面になっており、次々に得意先のデータを画面に呼び出せる。
このフォーム「得意先」も、XML文書としてエクスポートする。フォームをエクスポートすると、デフォルトで下記の3つのファイルが生成される。
- 得意先.xml (テーブル内のデータが含まれているXML文書)
- 得意先.xsl (XML文書にスタイルを与えるためのスタイルシート)
- 得意先.html (スタイルシートによってスタイルが与えられたXML文書を、Webブラウザで表示するためのスクリプトが含まれたHTML文書)
デフォルトではスキーマは不要なため生成されないが、もちろん同時に生成させることもできる。得意先.xmlのファイルは、得意先テーブルの内容をXML文書にしたものであり、テーブルの内容をXML文書として保存したときと同一のものだ。
このとき生成されるXSL文書が、レポート形式を表現するためのスタイルシートとなる。XML文書にスタイルシートを適用させて表示するのが、HTML文書になるわけだ。WebブラウザでHTML文書を表示させると下記のようになる。
XML文書にこうした書式情報を与えるのがXSLであるが、Accessではフォームやレポートの機能を表現するために、マイクロソフトが定義した「ReportML」(Report Markup Language)を利用しているという。ただし、このReportMLが使われているという情報はAccessのヘルプ内に記述があるのだが、それをどのように利用しているのか、どのような言語なのか、といったことについての資料は見つからなかった。
筆者注:2001年7月に、米マイクロソフトからReportMLについての英語版の資料が公開された
■XML文書をインポートでテーブル化
|
今度は、XML文書をAccessで読み込むインポート機能についてみていこう。
AccessのXML文書のインポート機能はテーブル単位に行われる。つまり、XML文書をインポートすると、その内容は Excelのワークシートのように行と列に分解されてテーブルとして保存されていく。ただし、ExcelでXML文書をインポートする際には、「ExcelのXML機能は使えるか?」で書いたように、XML文書に対する「フラット化」として、シェープツリーや属性のノードへの分解などがXML文書に対して行われたうえで、インポートされていた。あらゆるXML文書がそのまま素直に読み込めるわけではなかった。Accessでもそうした加工が行われているかどうかは重要なチェックポイントだが、調べてみると、AccessがXML文書を読み込む方法はExcelよりも単純な方法のようだ。
前述のXML文書のエクスポート機能で見たように、AccessでインポートできるXML文書は下記のような構造を持つ。
<dataroot> |
そこで、下記のようなもっとシンプルなXML文書を作って読み込ませてみよう。
<?xml version="1.0" encoding="UTF-8"
?> |
このときは下記のようなテーブルになる。
これで分かるのは、属性はまったく無視される点だ。では、もう少し複雑なXML文書の場合にどうなるのかを見てみよう。ExcelのXML文書の読み込みで出てきたような、Excelならフラット化が必要な程度に複雑なXML文書を、Accessでインポートしてみた。
<?xml version="1.0" encoding="Shift_JIS"
?> |
上記のXML文書を読み込ませた結果が下記のテーブルだ。結果からいうと、Contactがテーブル名となり、要素NameとEmailがそれぞれ列に。その内容がデータとして読み込まれているが、山田太郎氏の最初のメールアドレスは読み込まれていない。これは2つ目のメールアドレスによって上書きされたように考えられる。Accessのインポート機能では、Contact要素ごとに1フィールドが作成されるようだ。そのため、最初のContact要素では、Nameが「山田太郎」に決まると、Emailも1つだけとなり、最後のEmail要素が使われたのだと思われる。
山田太郎氏の1つ目のEmail要素は無視され、2つ目のEmail要素だけが採用されている |
こうしてみると、AccessのXML文書のインポート機能は、Excelのような変換過程をほとんど持たないことが分かる。
■AccessのXML機能のまとめ
説明が少し長くなったため、最後にAccessのXML機能をまとめておこう。基本的にはXML文書のエクスポートとインポートしかないのだが、エクスポート機能では、
- データのエクスポート
- テーブルスキーマをXML Schemaで記述したXSDファイルのエクスポート
- レポートやフォームの表示形式を、XSLのスタイルシート形式にしたエクスポート
の3種類の機能がある。これにより、AccessをXML SchemaのスキーマエディタやXSLのスタイルシート作成ツールとして使うことも、ある程度は可能だ。また詳細については触れないが、HTMLの代わりに、Internet Information ServerのActive Server Pagesに対応したASPファイルを出力する機能もある。
インポート機能では、特定の形式で書かれたXML文書をテーブルデータとして読み込める。
ただし、こうした入出力可能なXML文書の仕様については、やはり詳細な資料はいまのところマイクロソフトから提供されていないようだ。
参考文献■「Using XML and Access 2002」 Microsoft Assistant Center(英文)
■「Exporting to XML from Access 2002 (Revised)」 Microsoft Assistant Center(英文)
開発環境もXML対応へ |
Index | |
Office XPのXML度を探る | |
Office XP各製品のXML機能概要 | |
XML機能の核、「MSXML3」 MSXML3が自動的にインストールされる Internet Exlorerはバージョンアップしないが…… XML普及の弾みがつくか |
|
ExcelのXML機能は使えるか Excel以外のアプリケーションでExcelのデータ分析ができる XML文書にスタイルシートを適用する場合 XML文書を読み込む コラム Excelで読み込めるXML文書を作ってみる XML文書の出力 そのほかのXML機能 |
|
XML Schemaに早くも対応したAccess テーブルの内容をエクスポート スキーマ情報をXML Schemaで記述 フォームやレポートもXML形式で出力 XML文書をインポートでテーブル化 AccessのXML機能のまとめ |
|
開発環境もXML対応へ IntelliSenseがXML対応 Office XP:どれもすぐ使えるXML機能 |
|
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|