XModify

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 文により