<!ELEMENT xmlHandler (event+, action+)> <!ATTLIST xmlHandler apt:name ID #REQUIRED> <!ELEMENT event EMPTY> <!ATTLIST event apt:type (onChange) #IMPLIED> <!ELEMENT action (choose|command)+> <!ELEMENT choose (when+, otherwise?)> <!ELEMENT when (command+)> <!ATTLIST when apt:test CDATA #REQUIRED> <!ELEMENT otherwise (command+)> <!ELEMENT command (#PCDATA)>
xmlHandler 要素は、クライアント側で JavaScript コードを実行する場合に使用します。コードの実行は、環境の変化によってトリガされます。このような変化はイベントで伝播されます。イベントは、状態が変わった場合にプロパティによって発行されます。イベントタイプは変化の種類を示します。
XML ハンドラを定義するには、apt:template 要素のxmlHandler サブ要素の指定します。これは、 apt:name 属性で定義した名前が必要になります。XML ハンドラは、property 要素の apt:xmlHandler 属性を指定 (XML ハンドラの名前をその値として使用) して、プロパティが発行したイベントを待機するように登録されます。
event 要素は、 xmlHandler が待機するイベントを、その apt:type 属性を使用して指定する場合に使用します。ここでは、onChange 要素のみを定義します。このイベントは、ユーザーがその値を変更した場合にプロパティによって発行されます。プロパティの値は、たとえば、ユーザーが編集フィールドでキーを入力したり、チェックボックスをオフにしたり、リストボックスでエントリを選択してこの入力を変更した瞬間に変化します。GUI 要素にフォーカスを移したり、GUI 要素からフォーカスを外しても、このイベントはトリガされません。
1 つまたは複数のプロパティでイベントのハンドラが登録され、これらのプロパティのいずれかでそのイベントが発生した場合に、action 要素で定義されているコードが実行されます。action 要素には、 choose 要素か command 要素が少なくとも 1 つ含まれています。
command 要素は、クライアント側で実行される命令を指定します。現時点で含めることができるのは代入式のみです。代入式の左辺および右辺でも計算は許可されていません。代入式のスキーマは次のとおりです。<variable>=<value>
ドット表記 <property>. <qualifier> のあとには変数が続きます。<property> はプロパティの名前です。<qualifier> には、“value” と “enabled” の 2 つの値が可能です。value 修飾子はそのプロパティの値を提供します。変数の値は、プロパティで指定されているタイプと互換性がある限り、読み取ってどの値にでも確定できます。enabled 修飾子には、プロパティが有効になっている (フォーカスを受け取れる) 場合は「true」が含まれ、そうでない場合は「false」が含まれます。 これを読み取って「true」または「false」に設定できます。例 : propname.enabled=false
choose 要素は XSLT で定義される choose 要素に似ており、コマンドを条件付きで実行できます。when 要素を少なくとも 1 つ含んでいる必要があり、末尾に otherwise 要素を 1 つ含むことができます。
when 要素には、 1 つまたは複数の command サブ要素と 1 つの apt:test 属性があります。test 属性では、ブール値に評価される式を指定する必要があります。
式は、変数、数字、文字列、および以下のトークンで構成できます。
= |
等しい |
!= |
等しくない |
< |
より小さい |
> |
より大きい |
<= |
以下 |
>= |
以上 |
( ) |
挿入要素 |
not() |
ブール演算子 NOT |
and |
ブール演算子 AND |
or |
ブール演算子 OR |
true |
ブール肯定 |
false |
ブール否定 |
例 : (propname.enabled!=false) and not(propname.value='foo')
式が「true」に評価される場合は、when 要素のコマンドが実行され、choose ステートメントが実行されます。「false」に評価される場合は、次の when 要素が評価されます。どの when 要素も true ではなく、otherwise 要素が指定されている場合は、otherwise 要素のコマンドが実行されます。