Iris Today Archives: DXL ロードマップ:ドミノ XML 言語の理解

この記事では、R5、ロータス XML ツールキット、ドミノ Rnext での XML と DXL の概要について述べています。XML と DXL は、今後2、3年内のターゲットになっている限り、この2つの言語は、アプリケーション開発において幅広いプロトタイプを、安定してサポートしていくことになります。

Russ Lipton (russ@russ.com), Notes Developer, IBM

A frequent contributor to Notes.net, Russ Lipton has spent the past few years designing Notes applications for the Internet. While he fondly remembers Notes version one, he firmly believes these are the good old days for Domino developers.



2001年 10月 01日

XML(eXtended Markup Language)は、データのモデル化とプレゼンテーション用の業界標準規格言語になりつつあります。DXL(Domino XML Language)とは、XML で表現したドミノ ・データです。これを使用すると、呼び出し(import)、書き出し(export)、作業、ノーツ ・データベースでのデータの変換が簡単に行えます。現在のロータス XML ツールキットの R1.0 と今後リリース予定のドミノ Rnext が、組織内でのデータ統合の核となって、ドミノの果たす役割をさらに強めることになります。

この記事では、XML の基本的な知識があり、ロータス ノーツ/ドミノの経験がある開発者を対象にしています。Java と C++ に精通していると、この記事の理解に役立ちます。また、DXL が利用できるように、XML のスキル向上の手助けとなるように、オンライン ・リソースをこの記事の最後に掲載しています。

なぜ XML と DXL を使用するのか

Web すなわち、HTML は、特に決まったデータ ・モデルをあつかうのに非常によく適しています。Notes.net から、Google.com へ、次に、Lotus.com へ、そして別のサイトへジャンプするには、クリック、クリック、クリック、クリック、といったように、クリック操作を何度か行います。

例えば、1991 年の昔の古いプロトコルで、この同じデータを交換したり表示したりするには、どのくらい時間がかかるか考えてみます。それは、全く実現不可能です。地球上に広がる何百万人というユーザーへほぼリアルタイムで、データを効率よく収集したり分配したりすることは、絶対に行えません。

Web は、常時完全でないネットワークが、スタティック文書(static documents)へのアクセス手段になるように作られています。このネットワークは、ほぼ標準になりつつある限られたプレゼンテーション言語に基づいています。しかし、これでは、重要な処理を実行するアプリケーションの役には立ちません。Java や JavaScript そして、多数の企業固有の補足的な言語が、重要な市場のすき間を満たす一方、これらは、次に示すインターネットの2つの最も重要な要件を解決してはいません。

  • あらゆる場合にアクセス可能なデータ交換プロトコルを介して、十分に構造化されたデータを定義したり、有効にしたりできる、簡単で読みやすい言語
  • そのデータを変更したり、表示したりする矛盾のないメカニズム

XML やこれと同じ種類のプロトコルは、業界全体の要件を満たしてくれるであろうという期待が持てます。DXL、つまりドミノの XML は、ノーツ ・ユーザーの要望を満たします。DXL は、XML であるので、ドミノの設計仕様や、データの呼び出しや書き出し、変換のために蓄えられたデータを、XML を処理できる人達やXML を処理するツールへ公開することになります。

ドミノは、すでにデータ統合のために非常に優れた環境になっています。非常にあつかい難かったデータの管理や、かつてはコストがかかったプログラムに基づいたデータ統合のときに、DXL を使用すれば、ドミノに信頼がおけます。もし、アプリケーション作成を行うために、ドミノデザイナー以外のツールを使用するのであれば、ドミノのデータをノーツの外側に置くこともできます。ですから、おそらく次に示す4つの場合に DXL を使用することになります。

  • 外部データベースやアプリケーションから、ドミノのデータベースに XML データを呼び出す。
  • ドミノのデータベースから、その他のデータベースやアプリケーションに XML データを書き出す。
  • DXL 書き出し、変更、ドミノへのデータの再呼び出しを行って、ドミノのデータベースのデータを更新する。
  • ドミノにデータを再呼び出しする前に、最後の段階あるいは、中間の段階で、外部の XML ツールで処理を実行するためにドミノのデータを使用する。あるいは、サード ・パーティーのツールに DXL データを直接作成したり、ドミノにそれを呼び出したりする。

簡単に説明しますと、社内のどこにでもある、あらゆる環境下のあらゆるデータが、今日ではドミノとノーツの管理対象になります。

DXL は、NSF(ディスク上の保存フォーマット)に保存されないばかりでなく、ブラウザーで直接表示できません。すなわち、プレゼンテーション処理の状態を維持します。(未加工の XML データを限られた範囲で表示できる、いくつかのブラウザーはあります。)

とはいうものの、ドミノは、前述した使用方法にも優る特長があり、保存されている XML テキストの処理において理想的なものになっています。というのは、ドミノは、DTDs や、DXL データや、XSL スタイル ・シートを含んでいるからです。ドミノのデータベースで、これらのテキストを保存すると、ドミノのセキュリティーや複製、そして、XML を構成するためのビュー機能を獲得することになります。ファイル ・システムから直接 XML を取得するというささいな機能上の不便さと、これらの便利な機能を比べて考えていきます。


XML の基礎

SGML(Structured Generalized Markup Language)は、強固であり、十分発達していますが、独自のプレゼンテーション ・フォームにドキュメント構造を定義するためのほとんど排他的な規格です。政府がその使用について業界に委任している間、個々の業界は、広範囲の採用が法外なコストになることに気づきました。

HTML は、SGML 準拠の DTD(data type definition)で定義したサブ言語の一例です。HTML の直接的なコストは、最も少なくなっています。そして、その利用はいたるところで行われています。HTML は、本来インターネット上で、文書のプレゼンテーションを簡単にサポートするよう設計されました。十分な能力や、重要データの操作における柔軟性といった機能を提供しないうちに、HTML は、その主要な長所の基本がそこなわれるほど、機能的な負担を多く負うことになってしまいました。

XML は、SGML の複雑さと HTML に特徴的な機能のこの2つの理にかなう、妥協作として現れました。当初から XML は、タグやルールに関して、驚くほどたくさんの予備セットを定義しています。XML は、XML のルールに基づく2次的な言語を定義するための基盤になっています。

典型的な例は、まだ HTML に関連しています。HTML でパラグラフの区切りを示すために <P> あるいは、単独の <P> を使用する箇所では、XML データを構造化するために、<PRODUCT>、<SOFTWARE>、<RNEXT> を定義することもあります。これを定義するのは、より高度なレベルでの処理や変換を行うためです。XML は、HTML よりも厳格にデータをプレゼンテーション処理から分離しています。ある意味で、それは、ノーツの設計仕様に通ずるものです。そしてそれは、隠されているデータを表示する際には、フォームを適用するということです。

ここに簡単な XML ファイルがあります。

<?xml version="1.0"?>
<DOMINO_PRODUCTS> 

  <OS type="NT"> 
     <VERSION>Server</VERSION>
     <RELEASE>5.0</RELEASE>
  </OS>
  <OS type="NT"> 
     <VERSION>Client</VERSION>
     <RELEASE>5.0</RELEASE>
  </OS>
  <OS type="Linux"> 
     <VERSION>Server</VERSION>
     <RELEASE>5.0</RELEASE>
  </OS>

</DOMINO_PRODUCTS>

このコードは、NT と Linux という、2つの異なるタイプのオペレーティング ・システムについて定義しています。それぞれのタイプのバージョン(例えば、server と client)とリリース番号を割り当てています。

ここでのキーポイントは、HTML タグは、今まで少数の団体によって定義されていましたが、XML タグは誰でも定義できるということです。すなわち、マイクロソフトの Internet Explorer ブラウザーだけが、そのブラウザー ・モデルに合うように HTML タグの読み込み処理を行っていますが、どんな標準的な XML プロセッサーでも、あらゆる XML 標準タグを読み込めるようにしておくことが理想です。つまり XML 標準タグが、マイクロソフト、ロータス、あるいその他の人に定義されたかどうかにかかわらず、読み込めるということになります。そして、これは、豊かな柔軟性があるということを意味します。例えば、あなたは、これに定義している製品へのどちらか一方のアプローチを選ぶでしょう。

<PRODUCT type = "Server"> 

  <OS>NT</OS>
  <RELEASE>5.0</RELEASE>
  <MEDIA>CD</MEDIA>
  <PRICE>995.00</PRICE>

</PRODUCT>

XML は、当初から冗長性があります。(つまり、使用したいタグが多く隠されています。)XML はテキストですから、どんなテキスト ・エディターでも書いたり読んだりできて、容易に修正できます。

XML テキストを(組み合わせタグにより)的確な形にして、有効にする処理を行う場合に、編集、確認、およびスキーマ設計ツールは、XML が成熟するつれ、XML をより扱いやすいものに変えていきます。(もしそのツールが提供されると、データ ・タイプあるいはスキーマ定義にそれらは合うようになります。)この記事の最後の項、XML リソースとリンクの一覧を示した DXL 作業をサポートするインターネットのリソースを参照してください。


ドミノ DTD とDXL

XML 文書は、文書タイプ定義(DTD、document type definitions)があってもなくても作り出せます。DTD なしで、XML プロセッサーは、まだ文書が文法的に的確であるかどうかを決めることができます。しかし、DTD により、文書が有効であるかどうかを決めるこができます。すなわち、文書のタグが仕様にあっているかどうかを決めることになります。

実際、DTDs は、標準の XML ではありません。その主な理由は、XML スキーマが、その役割を DTD と今競っているからです。しかし、DTDs は比較的わかりやすいものです。基本的に、文字列変換された(PCDATA)データあるいは文字列変換されていない(CDATA)データへのルートを定義づけている階層構造において、XML 文書の中に要素を明記することになります。

次の簡単な例は、前項の XML ファイルの例に DTD が似ているということを示しています。(DOMINO_PRODUCTS は、文書タイプであり、また文書中の要素であるということに注意してください。)

<?xml version ="1.0" standalone="yes"?>
<!DOCTYPE DOMINO_PRODUCTS [
<!ELEMENT DOMINO_PRODUCTS (OS)*>
<!ELEMENT OS (VERSION, RELEASE)>
<!ELEMENT VERSION (#PCDATA)>
<!ELEMENT RELEASE (#PCDATA)>
<!ATTLIST OS type (Linux | NT | Macintosh)>
]>

決定的なことは、ある要素が階層的な関係において、他の要素を含むということです。この例では、ドミノは、そのオペレーティング ・システムによって定義されていて、順にバージョン、リリースを含んでいます。OS 要素は、属性リストと関係があります。つまり、実際の文書が、OS type = "Linux" であることを明記する理由です。

いつでも DTD にタグを加えることができます。XML 文書の中で使えなかったり認められないタグは、無視されます。もし DTD の中に適切なタグを記述しなかった場合、ほとんどの XML プロセッサーは、それに対するメッセージを出力してきます。

Lotus XML Toolkit(US) を提供する、ドミノ DTD は、ノーツのデータベース要素を有効にする XML ファイルの作成ルールについて記述しています。文書で使用するタグを選択するには、ドミノ DTD の DXL タグを十分理解する必要があります。

結局、DXL は、XML で記述されたノーツのデータベース上のすべての意味のあるデータ要素を表示します。つまり、フォームとビューによって、リッチ ・テキスト文書をフィールド要素やデザイン要素へと変換します。ほとんどの要素はすでに表示されています。より多くの要素が、毎月、加えられています。内部操作では、ノーツのデータ表示に最初に関心が集まりました。今では、(データ表現と同時に)データの文字列変換や変形処理をサポートするより洗練された機能を提供するという外部的な段階になっています。

ドミノ DTD か、または DXL 処理用のドミノ XML スキーマのどちらか一方を選択できます。評価用に、Lotus-developed schema(US) をダウンロードすることができます。

もしすでにノーツのデータベースやクラスについて理解しているのであれば、DTD が、合理的な自己定義をしていることがわかります。DTD の多くのコメントは、DXL として使用するため、互いの要素の関係をより詳しく説明しています。

ドミノ DTD は、当然大規模なものです。文書化とは、サンプルを備えた使用単位に分けることです。Lotus XML Toolkit Guide(US) から表示される次の画面は、body 要素(body element)のヘルプを示しています。

body element help topic
body element help topic

DTD 文書化では、さらに詳しく知るためには、リンクをたどっていくことになります。ノーツのデータベースの知識があると、DTD を簡単に読めるようになれるだけではなく、DTD それ自身が、ノーツのデータベース構造を理解するための非常にすばらしい練習ツールになっています。

ここに部分的な例があります。この例は、ドミノ DTD で記述されたリッチ ・テキストが、実際の DXL テキストにおいてどのように表記されているかを示しています。

<document form='Memo'> <noteinfo unid='9C93469B4BFC2081852567AE00559882'> 

          <created>

<datetime>19991205T091500,00-04</datetime> 

          </created> 
       </noteinfo>
       <item name='Subject'>
          <text>DXL Article</text>
       </item> 
       <item name='Sent'> 
          <datetime>19991205T091500,00-04</datetime> 
       </item> 
       <item name='From'> 
          <text>Russ Lipton</text> 
       </item>
       <item name='Body'> 
          <richtext> 
               <par> 
                  <run> 
                     <font style='italic'/>Please
                  </run> 
                     use Domino DXL! 
               </par> 
          </richtext>
       </item>

</document>

ここでわかるのは、これが、特別に定義したドミノ ・タグを利用した「正しい」標準的 XML であるということです。ポイントは次の通りです。

  • 文書は、ノードやサブノードから構成されるツリーとして表されます。このポイントを説明するために、この例には、空白を加え、インデントを行いました。空白の追加とインデントを行うか行わないは選択できます。
  • ほとんど(といってもすべてではなく)の XML プロセッサーは、XML テキストの空白を無視します。XML プロセッサーは、タグ自体によって記述される空白を表示します(例えば <text>Russ Lipton</text> がその例です)(空白はそれだけに特化したサブジェクトです)
  • 「Item」は、この XML テキストの主要な要素です。
  • 属性は、定義されたデータベースのコンポーネントの意味を、記述しています。(この例では文書のフォーム属性は「Memo」です)すべての XML と同じように、それぞれのタグは閉じられています。(すなわち <item> テキスト </item> というようにです)Item 要素の「name」属性には、次のような適当な値があります(「subject」、「sent」、「from」、「body」)。
  • 「richtext」タグは、扱える単位の細かなコンポーネントにノートを分解しています。Rnext での最終目標は、リッチ ・テキストの全コンポーネントの完全な表現です。

次の例は、もう一つの基本的なドミノ ・データ ・タイプ(form)を示しています。それは、あなたが他のデータベースのコンポーネントと合わせて利用できるような、DXL の設計要素、つまり、formulas、buttons、scripts を利用することができるということを示しています。

<form name='Mini Doc' default='true' mailable='true'> 

     <noteinfo>...
     </noteinfo> 
     <code event='windowtitle'> 
       <formula>@If(@IsNewDoc; "New Memo"; Subject)
       </formula>
     </code> 
       rest of XML text follows

</form>

新しいリリースでは、新しいコンポーネントを紹介していくので、ドミノ DTD は、定期的に変化していきます。しかし、ドミノでの作業のほとんど多くは、今、DXL で行った処理(あるいはこれから行う処理)になります。たぶん、与えられた DXL タグが最もよくニーズを満たしていることにお気づきになるでしょう。しかし、ドミノ ・データの割り当てをカスタム化したい場合は、もちろん、DXL タグを作り出してもかまいません。


ロータス XML ツールキットと Rnext

2000 年の夏に、プリビューのために本来リリースされたロータス XML ツールキットは、ドミノ R5.0 や、今後リリースされるドミノとともに機能します。このツールキットは、無料でダウンロード(US)できます。

ロータス XML ツールキットのリリース 1.0 は、すべての Win32 プラットフォームであるノーツ C API を含む広範囲な DXL プログラミング用に Java と C++ クラスのセットを提供しています。(他のプラットフォームをサポートできる新しい DXL 機能は、Rnext で実現される予定です。)

コマンド ・ラインで、ロータス XML ツールキットのかなり多くを作ることができます。ここで DXL を書き出ししたり呼び出ししたりする、2つの典型的なコマンド ・ラインの例があります。(さしあたりフラグについては気にしないでください。この例は、単なる説明にすぎません。)

dxlexport db.nsf -o db.xml -a 

dxlimport -i db.xml -d newdb.nsf -co

ツールキットは、DXL プログラミングを学ぶ上で、チュートリアルとして使える一連の例を提供しています。

ツールキットの呼び出し処理や書き出し処理のクラスは、データをあつかうために必要なコア機能を提供しています。DXLImporter クラスは、ノーツのデータベースへ DXL データを呼び出します。メソッドを呼び出す前に、Import のオプション ・プロパティーをセットします。オプションは次のようになります。

DXLIMPORTOPTION_CREATE(常に新しいデータを作成します)
DXLIMPORTOPTION_IGNORE(DXL データを無視します)
DXLIMPORTOPTION_REPLACE(既存のデータを DXL データに置き換えます)
DXLIMPORTOPTION_UPDATE(既存のデータを DXL データで更新します)

DXLExporter クラスは、ドミノのデータベースから、DXL データを生成します。

その他のスペクトルの終わりで、Rnext の新しい NotesNoteCollection クラスを使用すると、書き出しを行うノーツのサブセットを指定するのに必要な、NotesNoteCollection オブジェクトを作成することができます。C API の NSF 検索サービスに基づいて、type、formula を表記することができ、かつ/または、関心のあるノーツを選択するために、「since」時間も表記できます。

したがって、たとえば、ノーツ文書、設計要素、管理用ノーツ、そして、ドミノ DXL DTD で記述されたものを選ぶことができます。すべての設計要素を選択するには、次のように記述します。

Dim nc as NotesNoteCollection 
Set nc = db.CreateNoteCollection(false)
Call nc.SelectAllDesignElements(true)

すなわち、データベース全体(db.CreateNoteCollection(true))を呼び出すか、あるいは使用したい特定のノーツを取得するかのどちらかです。

そして、全てのノーツ/ドミノのセキュリティーでは、認証済みの人だけが、XML データを書き出したり呼び出したりできるので心配する必要はありません。

この記事ではデータ交換を強調していますが、一方、ツールキットのサンプルには、ドミノの設計要素の情報検索例、ドミノデザイナーを利用しないドミノのアプリケーションの作成例、そして、設計一覧情報の要約を行うための DXL の利用例なども含まれています。ドミノデザイナー自体を補うツールを構築するために、DXL をさらに使うことができます。


Rnext ロードマップ

ノーツ/ドミノ Rnext のベータ ・バージョンは、現在 Notes.net で試験的な利用ができます。

計画としては、Rnext がロータス XML ツールキットと互換性を持つようになっています。2つのプロジェクトで、多くの基本コードを共有しています。Rnext は、いくつかの重要な箇所で、ドミノの XML サポート機能を拡張しています。

第1に、Rnext 開発チームは、最初の DXL 実装から、重要な XML クラスを考慮に入れていました。オリジナルの R5 の実装では、既存のドミノ ・クラスとメソッドを合体させました。XML サポート機能が拡大するので、すべてのクラスに対するメソッドがたくさん作り出されることになります。XML クラスの設計では、コードのメンテナンスを減らしてパフォーマンスを改善する構成になるよう、洗練された単純化を行っています。

第2に、ロータス スクリプトのサポートが利用できるようになります。

第3に、NotesStream と NotesNoteCollection クラスが追加されました。これらのクラスは、XML 呼び出し処理と書き出し処理へのパイプ(pipe)となり、データ交換のためにノーツのデータベースのさまざまな要素を選びだします。

パイプとは、呼び出し−書き出し処理の前に、データを一時的に変形して保存することを意味しています。あるいは、データを変形して、直接書き出し処理へデータが送られ、その後、この仮に変形されたデータは廃棄されることを意味しています。

Rnext クラス ・サポートは、次の3つのタイプに分けることができます。

  • 標準的な XML プロセッサー(XMLTransformer、DOMParser、SAXParser)
  • DXL 特有のプロセッサー(DXLExporter、DXLImporter)
  • ガイドクラス(Helper Classes)(NotesStream、NotesNoteCollection)

Java 実装と同様に、両方のロータス スクリプトへもサポートは、計画されています。

XML 処理は、規則正しく配置された XML テキストのノードを通過して、データの受信処理が受信後に使用できるように XML データの変換を行うパーサーに依存しています。オブジェクトと同様に、NotesStream あるいは NotesNoteCollection クラスによって作成された Richtext は、XML プロセッサーにとってすべて処理可能なものです。

XML プロセッサーは、文書オブジェクト ・モデル(DOM、Document Object Model)のツリー表現、あるいは イベント基本モデル(SAX)に依存しています。文書全体を読み込まなくてはいけないので、前者は、よりメモリーを多く使うことになります。後者は、処理に先立つプログラミングが必要ですが、能率的なノードを選択して問い合わせることができます。それぞれのモデルは、異なる状況で役に立っています。第3のモデル(XSLT)は、最も注目されています。(この記事では、XSLT についてこの後、詳しく述べていきます。)

Rnext での DOM パーサー(DOMParser)の実装は、ノード ・オブジェクト(要素、属性、実体など)のツリー作成や、プロパティー値のノードへの問い合わせ(例えば、ノードが「null」かどうかの問い合わせ)や、ノードに対するメソッドの指定が可能になります。

プロセス ・メソッドが、DOM ツリーへ入って来るデータを分析しますが、一方で、postParse イベント ・ハンドラが、ツリーに対して適用したい論理プロセスを用意しています。

SAX パーサー(SAXParser)は、標準的な XML モデルのイベント主導モデルに従います。一連のイベント(StartDocument、StartElement、EndElement など)として入力 XML を処理することや、Output(出力)メソッドを使って、文字列を Output オブジェクトへ書き出すことができます。

XSLTransformer クラスは、要求された出力を生成するために、入力データに対して XSL スタイル ・シートを適用します。XSLT が成熟するにともない、これは、大部分の XML 処理で好まれるモデルになっていくかもしれません。

XML プロセッサーは、NotesStream item あるいは Richtext item から入力を取得でき、出力は直にそれらの item へ書き出すことができます。したがって、ほかの箇所で使用する中間データを保存することができます。あるいはまた、あるプロセッサーからの出力は、別のプロセッサーの入力として自動的にパイプされます。

NotesStream クラスが、ノーツ XML アプリケーションをサポートするように設計されていると同時に、ノーツ全般の使用に適した一般的クラスになっています。基本的には、FIFO(First In First Out)バケットのことですが、NotesStream オブジェクトは、バックエンド ・クラス(あるいはいくつかのクラス)からのデータで「構成」され、そして他のクラスで使用するためにその同じデータが「空に」されます。

たとえば、NotesStream は、DXLExporter クラスを利用しているノーツのデータベースから書き出されたデータで構成され、それから、XSLTransformer クラスへデータは移されます。データは、メモリー ・バッファーか、ファイルのどちらかに送られます。


XSLT の紹介

もし、DOM あるいは SAX のパーサーにすでに精通しているにであれば、DXL データの分析と変形に、それらのパーサーを使い続けることになるでしょう。一方、XML をこれから使おうとしているのであれば、短い期間に集中的に XSL/XSLT について学習することをお勧めします。XSL は、拡張性のスタイル ・シート言語を表しています。そして、XSLT は、文書の変形を行う XSL 言語の一部分です。XSLT は、初期のパーサーの機能的な特長を多く組み合わせています。そのため、XSLT は、今後長く使用され続けていくことになるでしょう。

Web ブラウザーで、XML が直接表示されることが理想でしょう。Internet Explorer 5.0 とそれ以降のリリースでは、この点に関して、限られた範囲のサポートしか行いません。XML を直接表示するブラウザーのサポートは遅れています。

すべてのブラウザーは HTML を表示しているので、XML を HTML へ変形させるスタイル ・シート言語として、長い間 XSL は発展していました。XSL が、まさに XML そのものであるので、XSL は、それ自体の DTD から長所を引き出すことができ整合性も維持しています。個々のスタイル ・シートは、あらゆる業界の標準的 XML ツールで処理することができます。

XSLT スタイル ・シートを下記に示します。文書全体に XML としてこのスタイル ・シートが適用され、スタイル ・シートが、検索されたフィールドの数を数えています。

<xsl:stylesheet> 

  xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
  version='1.0'
  xmlns:dxl='http://www.lotus.com/dxl'
  exclude-result-prefixes='dxl' >
  <xsl:output method='html'/>
  <xsl:template match='/'>
  <H2>Field count</H2>
  <xsl:for-each select='//dxl:form'>
  <xsl:sort select='@name'/>

<BR/><B><xsl:value-of select='@name'/></B>:
<xsl:value-of select='count(dxl:body//dxl:field)'/> fields
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

XSLT スタイル ・シートは、XML テキストの中で使用したいものを記述できるばかりでなく、どのように表示させたいかも記述できます。つまり、HTML の埋め込みタグは普通に処理されます。

一部の出力文書は、この HTML コードを生成します。それは、もちろんブラウザーで表示することができます。

<H2>Field count</H2> 
<BR/> 
<B>_Calendar Entry</B>: 
38 fields
<BR/>
<B>_Document Memo</B>:
49 fields
<BR/>
<B>_Special\Link Message</B>:
23 fields
<BR/>
<B>_Special\Phone Message</B>:
22 fields
<BR/>
<B>_Special\Send Memo To Database Manager</B>:
39 fields

XSLT は、テンプレートの仕様、パターン照合、照合結果から得られた加工データの関連ルールにしたがっています。

たとえば、XSLT、DOM、SAX のこれらすべてを使いこなしているとしたら、どれを選びますか?DOM、SAX を使用すると、ノードを通過するには、プログラムのコードをカスタマイズするか、あるいは XML 文書のイベントの問い合わせを行わなければいけません。個々の新しいタイプの XML 文書には、新しいプログラムが必要です。対照的に、XSLT では、実行させたいデータ変形を記述し、XSL プロセッサーがそれを実行するのに最も適した方法を導き出します。ノードの操作ロジックを記述するのに、閉口することはありません。

手続き言語に慣れている人は、XSLT のルールに基づいたモデルに、最初はとまどうかもしれません。実は、SQL のようなデータベース問い合わせ言語とは異なるということではありません。(XSLT は、SQL と同じではありません。しかし、基本的な宣言モデルがいくぶん似ています。)このことはまた、多くのプログラマーに、ルールのような問い合わせ記述させることになります。


実用上の戦略

これまで述べたように、ドミノ Rnext のベータ ・バージョンは、ここ数ヶ月のうちに利用できるようになります。実際に体験できる機会が持てるようになります。しかし、現時点で XML 処理に最も適しているのは、ロータス XML ツールキットです。

XSLT をいち早く習得することをお勧めします。これは、一般的なノーツ ・プログラマーが学習できる範囲のことです。XSLT の習得が、XML と DXL の実使用を遅らせる障害にならないようにしてください。

確かに、DXL、XML、XSLT を処理する業界ツールの出現は、現在の XML アプリケーションに時折まごつくような実装の詳細を隠すことになります。なお、いったん XML アプリケーションがドミノによって生成されると、業界内で有効な XML ツールを、データに適用することができます。そのデータとは、すべての XML データであり、まさにテキスト ・データのことです。

これまでいろいろと述べましたが、DXL は今日、どのくらい役に立っているのでしょうか。データ処理を行うアプリケーションはすべて、DXL の長所を利用することができます。これは、組織内のすべてのアプリケーションに適用されることです。

データ交換に関する要求に、コスト的にも時間的にもたくさん費やしてしまい、機能強化が行き詰まってしまうことは、特にアプリケーション開発にはよくあることです。また、今までノーツ内での統合があまりにも複雑なアプリケーションに、手を付けなければいけないこともあったはずです。DXL のおかげで、いまやドミノは、組織全体にわたって広大なデータを保存できるデータ統合環境になっています。


DXL 作業をサポートするインターネットのリソース

XML 一般
W3C Extensible Markup Language (XML)page(US)
XML 仕様、ガイドライン、ソフトウェア、そして World Wide Web Consortium(W3C)のツールがあります。

A Technical Introduction to XML(US)
1998 年から XML.Com のサイトから、短いですが広範囲な XML のチュートリアルを取得できました。まだ十分使用できるチュートリアルです。

The XML FAQ(US)
ピーター ・フリンのこれまでの FAQ は、変わらず掲載されていますが、2001年6月ごろに更新されました。

O'Reilly's XML.Com(US)
このオンライン雑誌は、おそらく、業界の XML 開発の最新情報を提供しています。

IBM developerWorks XML Zone(US)
記事、ツール、XML 全般と関連テクノロジーに関するリンクなどがたくさんあります。

Microsoft's MSDN XML Core(US)
ここでは、このテクノロジーとマイクロソフトの関わり合いを調べることができます。

The Apache XML Project(US)
XML テクノロジーとツールのオープン ・ソース開発のための社交場です。

The XML Cover Pages(US)
ロビン ・カバーの日々の XML ニュースは、長く、XMLファンのお気にいりになっています。

Cafe con Leche XML News and Resources(US)
継続的な記事に加え、毎日の XML ニュースをカバーする大きな情報源です。

DevX XML Zo(US)
XML リンクとリソースに関するハブが、広範囲につぎつぎに出現しています。

ロータスのソフトウェア戦略と XML ツールキットLotus XML page(US)
現在のロータス製品や開発中の製品と組み合わせて XML 使用する方法に関する記事が、たくさん掲載されています。

Lotus XML Toolkit page(US)
ここから、ロータス XML ツールキットをダウンロードできます。

Notes.net The DXL Resources page(US)
Lotusphere で使用された DXL プレゼンテーションがあります。

DTD とスキーマ
XML DTD Tutorial(US)
詳細な説明はありませんが、DTD syntax を正しく利用するために便利な情報を提供しています。

XML Schemas(US)
W3C スキーマ ・ページがあります。このページには、インターネットのあちこちで進行中の開発に関するリンクがあります。

XML パーサーとプロトコル
Guide to XML Parsers(US)
パーサーを説明しているだけでなく、パーサー ・ツールに関する Web リンクがたくさんあります。

XML-RPC(US)
設計仕様とヘルプがあります。リモート処理に XML を使用する際に必要となるヘルプを、HTTP を介してインターネット上から探し出します。

Java
Java and XML(US)
Sun 社の API、ダウンロード、及びホワイト ・ペーパーがあります。

XSLT
What Kind of Language is XSLT?(US)
マイケル ・ケイ氏が書いた IBM developerWorks の記事があります。この著者は、Sax パーサーの作成者であり、XSLT の第一人者です。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=334206
ArticleTitle=Iris Today Archives: DXL ロードマップ:ドミノ XML 言語の理解
publish-date=10012001