本文へジャンプ

ソフトウェア > Lotus > Lotus Developer Domain > 

Iris Today Archives 

ドミノ・デザイナーでXMLデータ・アイランドを使う


Lotus Software
by Susanna Doyle
レベル:中級者
対象:Designer R5
原文の掲載:2000年5月1日

Iris Today Archivesの原文(US)

インデックス
どこにデータ・アイランドを配置するか
フォーム上でデータ・アイランドを使う
XSLデータ・アイランド
Javaスクリプト
XSLページ
データ・アイランドを文書中で使う
XML非対応のブラウザーでデータ・アイランドを隠す

ご注意:この記事は、ノーツRnextベータ・プログラムで計画・開発されている機能を紹介します。したがって、最終的な機能やUI と、記事中に紹介されるものは異なる可能性があります。

アプリケーションを開発する際に、XML(Extensible Markup Language) を使用することにますます関心が高まってきました。この理由として、データ交換にありがちだった問題から開発者を解放することによって、開発者がデータ自 体や、それをどのように利用するかといったことに集中することを可能にした結果、デファクト・スタンダードになったことが挙げられます。
Iris Today の「ドミノ・デザイナーでのXMLのエクササイズ」 の記事を読んだ方はご存知のように、ドミノ・デザイナーではXMLを使ったノーツのフォームやビューを作成でき、そのデータはXML対応のブラウザーで表示することができます。この表示内容はHTMLタグをノーツのデータベースに格納した場合と同じように表示されます。また、XSLを使えば、XMLデータをフィルタリングしたり、スタイルを設定できるほか、CSS (CascadingStyle Sheet) を使ってフィルタリングを行わずにスタイルのみを設定することもできます。

しかしここで、もし既存のドミノ・データベースのデザインをそのまま使い、ドミノがそれをブラウザーにHTMLとして送るようにして、できるだけ文書中のHTMLにXMLを含めたくないとしましょう。ノーツ文書の中でXMLデータ・アイランドを使用すれば、これを実現できます。データ・アイランドというのは、HTMLページの中に埋め込まれたXMLのことを指し、小規模なJavaスクリプトでこれを呼び出してXSLを適用し、文書が読み込まれたときにデータ・アイランドを表示することができます。

この記事では、Internet Explorer 5上で、XSLを使用して文書中にXMLデータ・アイランドを表示し、なおかつXMLに対応していないブラウザーではコードを隠す、ということを行うために現時点で必要なJavaスクリプトについて説明します。(ブラウザーのXML対応機能が進歩すれば、JavaスクリプトとXMLやXSLを組み合わせてこれを行う方法が充実してくるかも知れませんし、そうなれば、より多くのブラウザーでXMLを表示できるようになるかもしれません。)

XMLやXSL(Extensible Stylesheet Language) については、World Wide Web Consortium (W3C) XML(US)のページを参照してください。

どこにデータ・アイランドを配置するか
データ・アイランドは、ノーツのフォームのバックグラウンド、または文書中のリッチ・テキスト・フィールドの中に配置します。フォームのバックグラウンドにXMLを配置した場合は、フィールドのデータをXMLの一部として使うので、多くの文書の情報を表示できますが、XMLはフォーム中のリッチ・テキストのフィールド (例えばBodyフィールド) の、前か後にこなければなりません。XMLデータ・アイランドをリッチ・テキストのフィールドの中に配置した場合は、それを表示させたいすべての文書でXMLデータを繰り返す必要があります。また、リッチ・テキストのフィールドのデータは使用できなくなります。
 
上に戻る
 
フォーム上でデータ・アイランドを使う
次の図は、ドミノ R5デザイナーのヘルプにある@関数のトピックに、XMLを使って目次の情報を加えた例です。ここでは計算結果のサブフォームを使って、トピック・フォームにXMLを加えましたが、フォームにXMLを直接加え、 非表示式を使ってXML非対応のブラウザーからXMLを隠すという方法もあります。

@関数のトピックに、XMLを使って目次の情報を加えた例

この目次の表でのXML データは、@関数などを使って得られた値を元に生成した、YesかNo型式の値からのみ成り立っています。XSLが表を作成し、フォントのスタイルを設定して、ラベル・テキスト (ここではSmartIcon: のような) を加えます。そしてさらに、Noの答えはすべて赤で表示するという、条件つきのフィルタリングまで行います。CSSを使用し、HTMLのタグを使うことによって表のスタイルを設定することもできますが、データを条件に応じてフィルタリングできるのはXSLだけです。
 
上に戻る
 
XSLデータ・アイランド
データ・アイランドは、Javaスクリプトで使われるID(ここでは thisXML) を持った <XML> の要素にはさまれたXMLタグの集まりを指します。この例では、データ・アイランドはサブフォーム上にあり、テキストは全てパススルーHTMLに設定されています。XMLデータを保持するフィールドは、XMLの開始タグと終了タグにはさまれています。

XSLデータ・アイランド

XMLアイランドの長さは自由ですが、以下の式の基本形をとります。

<XML ID="yourXML">
<yourdata>some data</yourdata>
</XML>
 
上に戻る
 
Javaスクリプト
データ・アイランドの直後にはJavaスクリプトが続きます。データ・アイランドにはパススルーHTMLが設定され、その直後にはJavaスクリプトが続きます。このJavaスクリプトは、同じデータベースにページ要素として保存されているXSLを使って、文書のonLoadイベントのタイミングでXMLを表示します。このXSLの呼び出しは、相対パスを使って行われ、ここでは ../yourstylesheet.xsl となります。
次に、functiontable.xslページと、thisXMLアイランドを呼び出すJavaスクリプトを示します。ここでは <DIV> タグの中にHTMLを配置しましたが、同様のタグであれば何でもかまいません。

<XML id="style" src="../functiontable.xsl"></XML>
<SCRIPT FOR="window" EVENT="onLoad">
xslTarget.innerHTML = thisXML.transformNode(style.XMLDocument);
</SCRIPT>

<DIV id="xslTarget"></DIV>
 
上に戻る
 
XSLページ
XSLページにはどのような名前を付けてもかまいませんが、.XSLで終わらなければなりません。また、[ページのプロパティー] で、[Web アクセス:文書の内容を HTML として扱う] をチェックする必要があります。
 
このXSLは、ドミノ・デザイナー上でのXMLのエクササイズの記事で使用した表の XSLとよく似ていますが、ここではデータをチェックし、条件に応じて表示するために、xsl:chooseステートメントを使用しています。このxsl:chooseステートメントは、Internet Explorer 5では動作しますが、XSLをサーバーから取り入れてデータ変換を行う型式のブラウザーでは、うまくいかない可能性があります。

XSLページのコードは、XSLのソースで参照してください。
 
上に戻る
 
データ・アイランドを文書中で使う
この例のように、文書の中でデータ・アイランドを使うには、リッチ・テキストのフィールドに、XMLアイランドを、その後にJavaスクリプトを配置し、タグはパススルー HTMLに設定します。そして、開始タグと終了タグの間に、各タグの実際のデータはフィールドを使ってではなく、テキストとして入力していきます。
 
上に戻る
 
XML非対応のブラウザーでデータ・アイランドを隠す
XMLに対応していないブラウザーでデータ・アイランドを表示すると、XSLの形式を無視して、解読できなかったタグからテキストをそのままHTMLに送り込んでしまいます。この、そのままのHTMLはユーザーに見せたいものではありません。

幸い、R5 には@BrowserInfoという関数があり、これを使って、対応していないブラウザーかどうかをチェックして、XMLを隠すことが可能です。ここではこの式を、データ・アイランドがあるislandという計算結果のサブフォームで使いました。

@If(@BrowserInfo("BrowserType")="Microsoft" & @BrowserInfo("Version")=5 & TopicType="function";"island";"")

Internet Explorer 5でのみXMLを表示するということのほかに、この式は TopicTypeフィールドがfunctionとなっている文書のみのXMLを表示する、という役割を持っています。そうしなければ、XMLが使うフィールドに実際のデータがあるかないかに関わらず、フォームを使用しているすべての文書でデータ・アイランドが表示されてしまいます。この例では、フィールドのデフォルトの値が使用され、表の中はすべてYesが表示されてしまうでしょう。

最後に、XMLテキストをノーツ・クライアントから隠すように設定することをお忘れなく。

IBMはIBM Corporationの商標。
Lotus、Lotus Domino、Lotus NotesはIBMの商標。
その他、記載された社名および製品名は、それぞれ各社の商標または登録商標です。

 
上に戻る