VOSやOpenVOSでのXML(Extensible Markup Language)データの取り扱いについて、いくつかの研究をしてきましたが、私が学んだことをより多くの人と共有するのに役立つと思いました。
XMLとは?
以下のXMLの説明は、「XML.初心者のためのガイド」、デイブ・マーサー著。(Osborne/McGraw Hill, 2001)。
"SGML(Standard Generalized Markup Language)とは、デバイスに依存しない、システムに依存しない、人間と機械の両方で読み取り可能な情報を表現する方法を定義するための国際標準規格(ISO 8879)であり、SGMLのルールに準拠した言語をアプリケーションと呼び、HTMLをアプリケーションと呼ぶ。SGMLのルールに準拠した言語はアプリケーションと呼ばれ、HTMLはSGMLアプリケーションです。HTMLには、それ自体を標準的な方法で新しいタグ、属性、データ構造、あるいはコンテンツ型に拡張するための規定がありません... XMLは、HTMLのような事前定義された言語ではなく、SGMLの過度に複雑な性質を避けながら、新しい言語を定義する事前定義された方法です。技術的には、XMLにはSGMLに見られる機能の一部が含まれています。
XML スキーマは、特定の XML ドキュメント(またはドキュメントのクラス)を定義する方法です。これは、データベースを定義するのと同じように、要素、属性、データ型、使用可能な制約を含むドキュメントの構造を記述します。
XML文書型定義(DTD)は、スキーマと同様の目的で使用されます。
XMLは10年以上前から存在しており、競合する製品や手法が多数存在し、関連する規格も多数存在しています。また、XMLに関する業界向けの書籍も数多く出版されています。O'Reillyは"Learning XML"という本を出版していますので、参考になるかもしれません。www.oreilly.com を参照してください。 O'Reilly が管理する http://xml.com/ のウェブサイトには、多くの有益な記事やリンクがあります。
XMLの標準はWorld Wide Web Consortiumによって公開されており、http://www.w3.org。標準規格はかなり辛口なので、読もうとするのはお勧めできません。
XML は HTML に似ており、HTML と似たような遺産を持っていますが、より汎用的なエンコーディングです。 HTML は、Web ページに表示されたときにデータがどのように見えるかを記述します。 HTMLは、それ自体では、数字が数量、価格、または在庫番号を表すかどうかを記録しません。 一方、XMLは通常、データがどのように見えるかには関心がなく、データが何を意味するかを記述します。 XMLの一般的なアプリケーションの1つは、特定のデータベースのテキストエンコーディングを作成することです。 XMLは、「このフィールドは数字の価格である」「このフィールドは英数字の株式番号である」などと言う機能を持っています。 XML文書内のすべてのデータはテキストとしてエンコードされているため、エンディアンや浮動小数点数のバイナリ表現のようなベタベタした問題は解消されます。このように、XMLはコンピュータ間のデータ通信に適した言語として受け入れられつつあります。
XMLを処理するためのツール
私は、XMLを処理する2つの一般的に使われているオープンソースのパッケージを知っています。 1つ目はExpatで、2つ目はXercesです。これらのパッケージはどちらも1999年に作られました。Expatは一人の個人の作品で、XercesはIBMから出てきたものです。
XMLを扱うための2つの競合モデルがあります。1 つは Document Object Model (DOM) で、もう 1 つは Simple API for XML (SAX) です。SAX メソッド (Expat が使用) は、XML ドキュメントを直線的に読み込み、マークアップ要素が発生するたびにハンドラ関数を呼び出します。DOM メソッドは XML ドキュメント全体を読み込み、ツリー構造の階層を作成します。SAXはシーケンシャルアクセス方式、DOMはランダムアクセス方式と考えることができます。XercesはSAXとDOMの両方のAPIをサポートしています。expatにDOM APIを提供するサードパーティ製のパッケージがあります(「simkin」参照)。
XML ドキュメント」という用語を使用していますが、実際には XML エンコードされたテキストはファイルやデータストリームになります。 通常は、テキストを収集してパーサに渡す関数を提供します。
エクスパット
Expat は XML を読み込んで、XML 要素が表示されるたびに何らかのアクションを取るように設計されています。XMLベースのデータストリームを作成できることを示唆するドキュメントを見たことがありません。ExpatはC言語で書かれています。PerlやJava用のXercesのバージョンもあります。
VOSへの海外駐在員のポートは以下の場所にあります。
駐在員向けのマスターサイトは
および
駐在員の紹介はsourceforgeのホームページにあります; ここにリンクがあります。
expat を使用している他のオープンソースパッケージへのリンクは http://www.libexpat.org/ にあります。
クサーズ
XercesはXMLデータストリームを読み書きすることができます。Xerces は C++ で書かれており、C++ プログラムから呼び出されるように設計されています。
Tom Mallory と私は 2008 年半ばに Stratus の顧客向けに Xerces バージョン 2.8.0 を移植しました。 ターゲットは V シリーズプラットフォームでした。 現在の Xerces のバージョンは 3.0.1 です。 この移植版のコピーを入手したい場合は、アカウントチームに連絡してください。
xercesのマスターサイトは
どれを使うべきか?
XMLでエンコードされた文書を解析したいだけで、データストリームの逐次読み込みに対応した処理であれば、 expatを使うことをお勧めします。 Cで書かれていますが、他のプログラミング言語で書かれた関数やサブルーチンを呼び出すことができるおかげで、どのVOSプログラミング言語からでも expatを呼び出すことができます。
XML文書に対してランダムアクセス操作を実行する機能が必要な場合や、XMLを作成したい場合、C++でのプログラミングに慣れている場合は、Xercesを使うことをお勧めします。
XML ドキュメントを扱う機能をアプリケーションに追加するためのサポートが必要な場合は、最寄りの Stratus アカウントチームにお問い合わせください。