XModify
「XML UI」で記述されているように、Nexaweb Platform ではXML ドキュメント内にUI の状態が格納されます。Nexaweb に対応したアプリケーションの構成に応じて、Nexaweb Platform ではサーバーおよびクライアントの両方でUI ドキュメントのコピーが保持される場合があります。ただし、クライアントサイドのUI ドキュメントのコピーが常にUI を制御します。また、その他のアプリケーションデータも他のXML ドキュメントに格納される場合があります。
これらのXML ドキュメント(UI ドキュメントおよびアプリケーション固有のドキュメントの両方) は、XUpdate をXPath とともに使用して、宣言的に変更することができます。
XModify - XML ドキュメントを宣言的に変更するための言語。XModify を使用すると、既存のアプリケーションドキュメントを変更できます。
Xpath - XML ドキュメントの一部を指定するための言語。XModify シンタックスの一部として使用されます。
このトピックには次のセクションが含まれています。
- XModify およびXPath の概要
- XModify ページの作成
- XModify コマンドの使用方法の詳細
ショートカットシンタックスを使用したXML ドキュメントの更新
メモ: このトピックで言及するドキュメントは、特に断りのない限り、メモリ内に格納されたXML ドキュメントオブジェクトを意味します。
XModify およびXPath の概要
XModify は、XML ドキュメントを更新および変更するためのXML 言語です。次のXModify ページの例では、UI ドキュメントにボタンを作成する方法を示します。
<xm:modifications xmlns:xm="http://openxal.org/core/xmodify"> <xm:append select=/xal/rootPane"> <button text="a new button"/> </xm:append> </xm:modifications>
Nexaweb Platform 4.0 以降、すべてのインメモリドキュメントに名前が付けられています。Nexaweb Platform では、"xal" という名前はUI ドキュメントに予約されています。
XModify ではXPath 式を使用してドキュメント内の場所を指定します。Nexaweb Platform はXPath 1.0 仕様をサポートしています。上記の例では、"/xal/rootpane" はドキュメントルートの<xal> タグの子の<rootPane> タグを識別するXPath 式です。
"/xal/rootPane" は場所へのパスです。評価された場合、コンテキストノード(この場合'/') に対して相対的なノードのセットを返します。Nexaweb Platform では、各UI ドキュメントは単一の<xal'> 要素の下に<rootPane> 要素を1 つだけ持つことができます。したがって、"/xal/rootPane" は'/child::xal/child::rootPane[1]' の短縮形です。
child は軸の例です。軸は、場所のステップおよびコンテキストノードによって選択されるノード間のツリー関係を指定します。xal またはrootPane (もしくはその両方) はノードテストの例です。ノードテストは、場所のステップによって選択されるノードのノードタイプおよび拡張された名前を指定します。[1] は述部のサンプルです。述部は、任意の式を使用して、場所のステップによって選択されるノードのセットをさらに絞り込みます。
XPath の詳細については、http://www.w3.org/TR/xpath を参照してください。
XModify ページの作成
XModify ページは、静的ファイル、もしくはサーバーページまたはサーブレットによって動的に生成されるページとして作成することができます。各XModify ページは、1 つ以上の<xm:modifications> 要素を含む整形式のXML ドキュメントです。ページに複数の<xm:modifications> 要素が含まれる場合、これらの要素を単一の<xal> ルートノードでラップしてページを整形式にする必要があります。上記の例で示したように、次のように指定します。
document – 操作が実行されるドキュメントの名前を指定します。
xmlns:xm - XModify 命令の名前空間を指定します。http://openxal.org/core/xmodify を指定してください。
select - 要素、属性、またはテキストオブジェクトのセットに対して評価されるXPath 式を指定します。<create-document> を除いて、XModify 文にはselect 文が必要です。
サンプル1: jspページを使用して、イベントハンドラとして使用するXUpdate 文を生成する
XModify ページはNexaweb イベントハンドラとして動作します。次の例では、XML コードのスニペット、およびXModify を使用したXML ファイルのイベント処理を示します。
<button text="Append Button at End" onCommand="appendButton.jsp"/>
appendButton.jsp ファイル全体は、次のようになります。
<% String newButtonName = "myNewButton"; %> <xm:modifications xmlns:xm="http://openxal.org/core/xmodify"> <xm:append select="/xal/rootPane"> <button text="<%=newButtonName%>"/> </xm:append> </xm:modifications>
サンプル2: XModify で新しいXML ドキュメントを作成する方法
この例では、XModify 文により<name> および<address> の子がある"nexaweb" ドキュメントが作成されます。次に、同じmodifications ブロックの2 つ目のXModify 文により