訳注: この文書は "XML Events", W3C Recommendation, S. McCarron, et al., eds., 14 October 2003 を TAKI が訳したものです。訳の正しさについては一切保証しませんので、ご利用は自己責任でお願いします。

W3C

XML Events

XML のためのイベント構文

W3C 勧告 2003年10月14日

このバージョン:
http://www.w3.org/TR/2003/REC-xml-events-20031014
最新版:
http://www.w3.org/TR/xml-events
前版:
http://www.w3.org/TR/2003/PR-xml-events-20030804
Diff-marked 版:
xml-events-diff.html
編者:
Shane McCarron, Applied Testing and Technology, Inc.
Steven Pemberton, CWI/W3C®
T. V. Raman, IBM Corporation

本文書の正誤表を参照すること。標準情報の訂正が含まれることがある。

本文書は次の非公式形式でも入手可能: PostScript 版, PDF 版, ZIP アーカイブ, Gzip'd TAR アーカイブ.

本仕様の英語版のみが標準情報である。非標準情報の 翻訳版 も利用可能かもしれない。


要約

本文書で定義される XML Events モジュールは、ドキュメントオブジェクトモデル (DOM) レベル 2 のイベントインターフェイス [DOM2EVENTS] を持つイベントリスナと関連イベントハンドラを一律に統合できる XML 言語を提供する。振る舞いを文書レベルのマークアップに関連付ける相互運用的な手法の提供する。

この文書の状態

本セクションは、発行時におけるこの文書の状態について述べる。他の文書がこの文書を上書きすることがある。現在のW3C発行物のリストとこの技術情報の最新版は、 http://www.w3.org/TR/ の W3C技術情報索引 で見られる。

この文書はW3Cの 勧告 である。W3Cメンバーと他の関係団体により批評され、編者によりW3C勧告として承認された。安定した文書であり、参考資料として利用、また他の文書から標準参考文献として引用してよい。勧告作成におけるW3Cの役割は、仕様に注目を集め広範な普及を促進することである。これはWebの機能性と相互運用性を向上させる。XML Events 用のテストスイートは、公式な XForms 1.0 テストスイート の一部として実装報告に従い開発される。

この文書は HTML Activity の一部会としての W3C HTML ワーキンググループ (会員のみ) により発行された。 HTML ワーキンググループの目標はHTML Working Group charterにおいて議論される。この仕様に関連する特許開示は Working Group's patent disclosure page で見られる。

本仕様のエラーは www-html-editor@w3.org (archive) に報告すること。議論のメールをこのアドレスに送るのは不適である。公式な議論は www-html@w3.org (archive) で行ってよい。

目次

1. はじめに

本項は参考情報である。

イベント とは、XML文書内の要素に(それをターゲットにして)付随する非同期の出来事(要素の表現上のマウスクリックや要素の属性の値の計算エラー、また想像できない他の多くの可能性など)の表現である。

イベントのDOMモデル [DOM2EVENTS] では、一般的な振る舞いは、イベントが発生すると キャプチャ と呼ばれるフェイズでイベントが発生した要素 (その ターゲット と呼ばれる) へと文書ツリーを伝い下りるように 送信 され、 バブリング と呼ばれるフェイズで再びツリーを上に伝い戻る。一般に、経路内の任意の要素(オブザーバ(observer))は、一方のフェイズで、アクションの実行・イベントの停止・イベントのデフォルトアクションのキャンセルなど、イベントに反応することができる。次の図はこれを示す:

Event propagation flow diagram
DOM2 のイベントフロー: イベントはツリー内の要素(ターゲットという)を目標として、「キャプチャ」というフェイズでルートから下にターゲットまで渡される。イベントの型が許せば、「バブリング」というフェイズでイベントはツリーの同じ道を上に戻っていく。ルート要素とターゲットを含めた経路上のどの要素も「オブザーバ」になれる: つまり、一方のフェイズでイベントが通過していくときに有効になるハンドラをつけることができる。ハンドラは一フェイズのみ監視できる。両フェイズを監視するにはハンドラを2つつけなければならない。

アクション とはイベントへの反応の仕方である; ハンドラ とはそのアクションについて詳述したもので、例えばスクリプティングや他の手法を用いる。 リスナー とは、文書中の要素をターゲットにするイベントにそのハンドラを結びつけるものである。

HTML [HTML4] では、イベント名を属性名に符号化し、その属性の値が要素でのイベントのアクションになるようにすることでイベントを要素に結びつける。この方法には不具合が2つある: まずイベントを言語に硬く縛り付け、その結果新規イベントの追加に言語を変更しなければならない。そしてスクリプティングとイベントハンドリングの詳細を外部に分離できず、文書内容に混在させることを強制する。 SVG [SVG] は同様の手法を用いる。

HTML の新しい版を定義する過程で、拡張可能なイベント詳述法の需要を確認した。設計の必要条件は以下であった:

DOM は、次の機能を提供するイベントモデルを規定する:

本仕様に定義される listener 要素及びその属性は、要素での DOM Level 2 イベントをイベントハンドラに結びつける手段である。それは DOM Level 2 イベントインターフェイスの様々な側面を包括し、それによってイベント伝播の様々なフェイズ間にとられるアクションのマークアップレベルでの記述を提供する。

本仕様は特定のイベントについて規定するものではなく、またアクションを指定する特定の方法を強制するものでもない。それらの定義は、ここに述べる機能を用いる任意のマークアップ言語に残されている。

2.適合要件

本項は 標準情報 (normative) である。

本文書中のキーワード "しなければならない(MUST)", "してはならない(MUST NOT)", "必須である(REQUIRED)", "することになっている(SHALL)", "することになっていない(SHALL NOT)", "すべきである(SHOULD)", "推奨する(RECOMMENDED)", "してもよい(MAY)", "任意である(OPTIONAL)" は、 [RFC2119] で述べるとおりに解釈するものとする。

2.1. 文書適合

XML Events は、独立した文書型ではない。 XHTML のような他のホスト言語への統合を意図される。適合 XML Events 文書は、本仕様で強制するとされる機能とホスト言語で強制するとされる機能だけを要求する文書である。そのような文書は、次に挙げる基準を全て満たさなければならない:

  1. 文書は、そのホスト言語実装に表される制約に合成される 附属書 B - スキーマ実装 或いは 附属書 A - DTD 実装 で表される制約を満たさなければならない。

  2. 文書は XML Events 名前空間 [XMLNAMES] のための xmlns 宣言を含まなければならない。 XML Events のための名前空間は http://www.w3.org/2001/xml-events と定義される。ルート要素の開始タグの例ではこのようになるだろう:

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
          xmlns:ev="http://www.w3.org/2001/xml-events" >
    

2.2. ホスト言語適合

XML Events がホスト言語に内包されるとき、本仕様に要求される機能の全てがホスト言語に内包されなければならない。さらに、ホスト言語の内容モデル中に、本仕様に定める要素と属性が内包されなければならない。

2.3. ユーザーエージェント適合

適合ユーザーエージェントは、本仕様に要求される機能全てをサポートしなければならない。

3. XML Events モジュール

本項は標準情報である。

本仕様は XML Events と呼ばれるモジュールを定める。 XML Events モジュールは XML 名前空間 [XMLNAMES] 識別子 http://www.w3.org/2001/xml-events を用いる。

本仕様で名前空間接頭辞 "ev" を用いる例は全て、文書内の適切な場所に xmlns 宣言 xmlns:ev="http://www.w3.org/2001/xml-events" があるものとする。用例は全て参考情報である。

本項ではあとこのモジュールの要素と属性、意味論について述べ、 [XHTMLMOD] で要求される抽象モジュール定義を提供する。

XML Events モジュールは次の要素と属性をサポートする:

要素 属性 最小内容モデル
listener event (NMTOKEN),
observer (IDREF),
target (IDREF),
handler (URI),
phase ("capture" | "default"*),
propagate ("stop" | "continue"*),
defaultAction ("cancel" | "perform"*),
id (ID)
EMPTY

実装: DTD, XML Schema

3.1. listener 要素

listener 要素は、 DOM の EventListener インターフェイスの部分集合をサポートする。これを用いてイベントリスナーを宣言し DOM 中の特定のノードに登録する。次の属性を持つ:

event
event 属性は必須で、リスナーが登録されているイベント型を指定する。 [DOM2EVENTS] で規定されるように、属性値は XML Name [XML] であるべきである。
observer
observer 属性は任意で、イベントリスナーを登録する要素の id を指定する。この属性がない場合、オブザーバは event 属性が乗っている要素 (後述「オブザーバ要素に属性を直接つける」を参照)、またはその要素の親 (後述「ハンドラ要素に属性を直接つける」を参照) になる。
target
target 属性は任意で、イベントのターゲット要素(つまりイベントが発生する要素)の id を指定する。この属性がある場合、 event 属性と target 属性の両方にマッチするイベントだけが、関連付けられたイベントハンドラで処理される。明らかにイベントが伝わる道のため、ターゲット要素はオブザーバ要素の子孫であるか、あるいはオブザーバ要素自身であるべきである。

この属性の使用は注意を要する; 例えば、次のように指定し

<listener event="click" observer="para1"
     target="link1" handler="#clicker"/>

'para1' を次のノードの祖先とすると

<a id="link1" href="doc.html">The <em>draft</em> document</a>

ユーザが単語 "draft" 上をクリックすると、 <a> ではなく <em> 要素がターゲットとなるためハンドラが有効にならない; <a> 要素とその子供全ての上でのマウスクリックを受け取るには、 target 属性ではなく observer="link1" を用いる。

handler
handler 属性は任意で、イベントがオブザーバに到着した際に行われるべきアクションを定義するリソースの URI 参照を指定する (本仕様は要素がとるべき形式を強制しない:「イベントハンドラ」を参照)。 この属性がない場合は、ハンドラは event 属性の乗っている要素である (後述「ハンドラ要素に属性を直接つける」を参照).
phase
phase 属性は任意で、要求するイベントが (DOM 2 イベント伝達フェイズの中で) いつリスナーを有効にするかを指定する。
capture
リスナーはキャプチャフェイズで有効になる。
default
リスナーはバブリングフェイズまたはターゲットフェイズで有効になる。

デフォルトの振る舞いは phase="default" である。

全てのイベントがバブルするわけではなく、その場合 phase="default" ではイベントのターゲットをオブザーバにするイベント処理しかできないことに注意。

propagate
propagate 属性は任意で、現在のノードの全てのリスナを処理した後に(キャプチャまたはバブルフェイズの)経路上でイベントが継続するかどうかを指定する.
stop
イベント伝達を停止する。
continue
(スクリプトのような他の手段や他のリスナーによって停止しない場合、)イベント伝達を継続する。

デフォルトの振る舞いは propagate="continue" である。

defaultAction
defaultAction 属性は任意で、イベントについての全てのリスナーを処理した後に、そのイベントのデフォルトのアクション(存在する場合)を実行するべきか否かを指定する。例えば、XHTMLでは <a> 要素やその子孫の上でのマウスクリックのデフォルトアクションは、リンクの探索である。
cancel
取り消し可能なイベント型である場合、デフォルトアクションは取り消される。
perform
(スクリプトなどの他の手段や他のリスナによって取り消されない場合、)デフォルトアクションは実行される。

デフォルトの値は defaultAction="perform" である。

全てのイベントが取り消し可能なわけではなく、その場合この属性は無視されることに注意。

id
id 属性は任意で、文書内で一意的な識別子である。この識別子の値は DOM インターフェイスを通した要素操作にしばしば用いられる。

observer = "<element-id>"event = "<event-type>" は SMIL EventTiming [SMIL20] の begin = "<element-id>.<event-type>" 属性と同様であることに注意。

3.1.1. リスナーの使い方

  1. この例では、 "#doit" の要素内のハンドラを取り付け、そのハンドラは id="button1" である要素かその子の上での activate というイベントの発生時に有効になる。この有効化はバブリング中に発生し、オブザーバ要素自身の上でイベントが発生した場合はイベントの要素への到着時 (ターゲット フェイズ) に発生する。

    <listener event="activate" observer="button1" handler="#doit"/>
    
  2. これは #overflow-handler のハンドラを取り付け、 id="expr1" である要素上でのイベント overflow の発生時に有効になり、 id="prog1" である要素までバブルする。

    <listener event="overflow" observer="prog1" target="expr1"
            handler="#overflow-handler"/>
    
  3. これは #popup のハンドラをつけ、 id="embargo" である要素かその子供で activate イベントが発生するといつでも有効になる。キャプチャフェイズ間に有効になり伝達が停止するので、embargo 要素の子要素の activate イベント監視を(このハンドラの行動に関係なく)遮る効果がある。

    <listener event="activate" observer="embargo" handler="#popup"
            phase="capture" propagate="stop"/>
    
  4. これは他の文書からハンドラをつける。

    <listener event="activate" observer="image1"
        handler="/handlers/events.xml#activate"/>
    

3.2. オブザーバ要素に属性を直接つける

listener 要素の属性は、id 属性を除いて全て Namespaces in XML [XMLNAMES] に定義されるグローバルな属性として用いてよく、属性を他の要素につけられる。

つまり厳密にいうと <listener> 要素は冗長なものだということに注意。というのは次の:

<anyelement ev:event="click" ev:observer="button1" ev:handler="#clicker"/>

これは次と同等である:

<ev:listener event="click" observer="button1" handler="#clicker"/>

にもかかわらず、 <listener> 要素の有用性についてはなお維持される。

observer 属性を省略すると(handler 属性は省略せずに)、 他の属性のついた要素がオブザーバ要素になる。

3.2.1. オブザーバ要素につける属性の使い方

  1. この最初の例は "#popper" と識別されるハンドラを <a> 要素につけ、イベントのデフォルトアクションを取り消す。

    <a href="doc.html" ev:event="activate" ev:handler="#popper"
       ev:defaultAction="cancel">文書</a>
    
  2. これは イベント overflow に関する #handle-overflow のハンドラを現在の要素につける。

    <div ev:event="overflow" ev:handler="#handle-overflow"> ... </div>
    

3.3. ハンドラ要素に属性を直接つける

要素にグローバルな属性をつける時、 handler 属性が省略されると他の属性のついた要素がハンドラ要素になる。

observer 属性と target 属性は IDREF であるから、この場合ハンドラ要素及びオブザーバ/ターゲット要素は同じ文書中に存在しなければならないことに注意(一方他のケースでは、 handler 属性は URI であるのでハンドラ要素が別文書中にあってもよい)。

observer 属性も省略されている場合、ハンドラ要素の親要素がオブザーバ要素となる。

3.3.1. ハンドラ要素につける属性の使い方

  1. このケースでは、要素は id="form1" である要素の submit イベントのためのハンドラとなる。

    <script type="application/x-javascript"
            ev:event="submit" ev:observer="form1">
       return docheck(event);
    </script>
    
  2. このケースでは <action> 要素は q-submit イベントのハンドラであり、オブザーバは questionnaire 要素である。

    <questionnaire submissionURL="/q/tally">
        <action ev:event="q-submit">
          ...
        </action>
        ...
     </questionnaire>
    
  3. <script> 要素は click イベントのハンドラである; <img> 要素がオブザーバである。

    <img src="button.gif" alt="OK">
        <script ev:event="activate" type="application/x-javascript">
            doactivate(event);
        </script>
    </img>
    
  4. <onevent> 要素はイベント enterforward のハンドラである。 <card> 要素がオブザーバである。

    <card>
        <onevent ev:event="enterforward">
            <go href="/url"/>
        </onevent>
        <p>
          こんにちわ!
        </p>
    </card>
    
  5. <catch> 要素は nomatch イベントのハンドラである。オブザーバは <field> 要素である。

    <form id="launch_missiles">
      <field name="password">
        <prompt>コード名は何ですか?</prompt>
        <grammar>
          <rule id="root" scope="public">カブハボタン</rule>
        </grammar>
        <help>あまり知られていない野菜の名前です。</help>
        <catch ev:event="nomatch">
          <prompt>セキュリティ違反!</prompt>
          <submit next="apprehend_felon" namelist="user_id"/>
        </catch>
      </field>
      <block>
        <goto next="#get_city"/>
      </block>
    </form>
    
  6. この例は異なるイベントのための3つのハンドラを示す。オブザーバは3つとも <secret> 要素である。

    <secret ref="/login/password">
        <caption>パスワードを入力してください。</caption>
        <info ev:event="help">
            質問は help@example.com まで。
        </info>
        <info ev:event="hint">
            ペットの名前
        </info>
        <info ev:event="alert">
            この欄は必須です。
        </info>
    </secret>
    

3.4. オブザーバとハンドラの属性のデフォルトの要約

下表は、関連属性が省略された場合に要素がオブザーバ或いはハンドラの役割を果たすことを要約するものである。

observer 属性・handler 属性の省略効果
Handler あり Handler なし
Observer あり (宣言されるとおり) 要素はハンドラである
Observer なし 要素はオブザーバである 要素はハンドラで
親がオブザーバである

3.5. イベントハンドラ

本仕様は、 XML Events を用いる XML アプリケーションに対してハンドラ記述の特定の手法を用いることを要求しない。しかしながら、特にハンドラに属性を直接つける項の用例では、それが指定されうる方法の例示を意図した。

ただ2つの手法がよく使われるだろうと思われる: スクリプト (XHTML の <script> 要素など) と XML 要素 (WML の <onevent> 要素など) を用いたマークアップ。対になる仕様がこれらの手法をサポートするマークアップを提供するだろう。

3.6. 基本 XML Events プロファイル

基本 XML Events プロファイルは、小型デバイス上における処理の簡易化を目的とした XML Events モジュールの使用制限を許可する。

基本プロファイルは、 listener 要素とその属性の使用、およびグローバル属性としての listener 要素由来属性の使用に、次の制限を課す。

  1. 外部イベントハンドラ

    外部イベントハンドラ処理能力は必須ではない。 listener 要素上の 'handler' 属性の使用時、またグローバル 'handler' 属性の使用時、その属性値に指定されるハンドラは現在の文書内にあるべきである。

    例えば、次の例は許されるが:

    <listener event="click" target="#button1" handler="#clicker"/>
    

    一方次の例の処理は必須ではない:

    <listener event="click" target="#button1" handler="doc2.html#clicker"/>
    
  2. イベントバインディングの順序

    オブザーバへのイベントハンドラのバインディングは、オブザーバ要素の終了の前の位置を必須としてよい。言い換えると、オブザーバにバインディングする <listener> はオブザーバ要素の終了タグより後には出現しないだろうし、オブザーバにバインドする属性を負うイベントハンドラもオブザーバ要素の終了タグの後には出現しないだろう。

4. イベント型の命名

本項は参考情報である。

本仕様は、言語設計者がイベントをどう命名すべきか(つまり event 属性内で用いられる値)について公式には規定しない。

しかしながら、将来の版の DOM Events では名前空間を指定したイベント名を許可されそうなので、したがって言語設計者にはイベント名にコロン文字 ":" を用いないように助言する。

数々のイベント型が DOM2 [DOM2EVENTS] で規定されており、それらの名前と意味論について参照しておくべきである。

A. DTD 実装

この附属書は 標準情報 である。

XML Events の DTD 実装は [XHTMLMOD] に定める必要条件に適合する。したがって、それは Qualified Names サブモジュールと、本勧告案に定める XML Events のためのモジュールファイルを提供する。

A.1. Qualified Names モジュール

このモジュールは引数実体 %xml-events-attrs.qname; を定義することに注意。この実体は、任意のホスト言語内の要素の属性リスト中での使用が意図され、言語自身の名前空間内の要素上でのイベント属性の使用を許可する。この場合ホスト言語ドライバは引数実体 %XML-EVENTS.prefixed;INCLUDE に、そして引数実体 %XML-EVENTS.prefix; を XML Events 属性の接頭辞である値に設定するべきである。

<!-- ....................................................................... -->
<!-- XML Events Qname モジュール  ............................................ -->
<!-- file: xml-events-qname-1.mod

     これは、 XML Events - XML のためのイベントモジュールであり、
     DOM イベントモデルへのアクセスの定義である。

     Copyright 2000-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved.

     この DTD モジュールは、次の PUBLIC また SYSTEM 識別子で識別される:

       PUBLIC "-//W3C//ENTITIES XML Events Qnames 1.0//EN"
       SYSTEM "http://www.w3.org/MarkUp/DTD/xml-events-qname-1.mod"

     改訂:
     (なし)
     ....................................................................... -->

<!-- XML Events Qname (修飾名) モジュール

     本モジュールは、セクション 'A', 'B' と題した2パートで構成される:

       セクション A は、名前空間-修飾名、名前空間宣言、 XML Events と
       拡張のための接頭辞つき名前をサポートする引数実体を宣言する。

       セクション B は XML Events 要素型全てについての名前空間-修飾名
       の提供に用いる引数実体を宣言する。

         %listener.qname;   <listener> のための xmlns-修飾名
         ...

     XML Events 拡張はこれと同様のモジュールを生成するだろう。
     この目的に適したテンプレートモジュール('template-qname-1.mod')が
     XML ディストリビューションに含まれている。

-->

<!-- セクション A: XML Events XML 名前空間フレームワーク ::::::::::::::: -->

<!-- 1. 名前空間接頭辞の有効化に使う %XML-EVENTS.prefixed; 条件区間キーワー
        ドを宣言する。オーバーライドされない場合、デフォルトの振る舞いが DTD
        全般の接頭辞体系に沿うように、デフォルト値は DTD ドライバから
        '%NS.prefixed;' を継承すべきである。
-->
<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % XML-EVENTS.prefixed "%NS.prefixed;" >

<!-- 2. XML Events 名前空間の識別に使う URI 参照を含む引数実体(例,
        %XML-EVENTS.xmlns;)を宣言する。
-->
<!ENTITY % XML-EVENTS.xmlns  "http://www.w3.org/2001/xml-events" >

<!-- 3. 接頭辞が有効であるときに用いるデフォルトの名前空間接頭辞文字列を持
        つ引数実体(例, %XML.prefix;)を宣言する。これは DTD ドライバや文書実体
        の内部部分集合においてオーバーライドされてよい。要求するデフォルトの
        接頭辞がなければ、これを空文字列として宣言してよい。

     NOTE: [XMLNAMES] にあるように、名前空間接頭辞は URI 参照の代用を果たすも
     ので、それ自身が重要というわけではない。
-->
<!ENTITY % XML-EVENTS.prefix  "" >

<!-- 4. 接頭辞が有効なときに用いるコロン付き接頭辞を持つ引数実体(例,
        %XML-EVENTS.pfx;)を宣言する。無効なときは空文字列。
-->
<![%XML-EVENTS.prefixed;[
<!ENTITY % XML-EVENTS.pfx  "%XML-EVENTS.prefix;:" >
]]>
<!ENTITY % XML-EVENTS.pfx  "" >

<!-- 修飾名拡張をここで宣言する ................................ -->
<!ENTITY % xml-events-qname-extra.mod "" >
%xml-events-qname-extra.mod;

<!-- 5. XML 中に埋め込まれる名前空間について XML Events でない名前空間宣言
        属性を含めるため、引数実体 %XML-EVENTS.xmlns.extra.attrib; を再度宣言
        してよい。デフォルトは空文字列である。 DTD 内部で用いるならばここに
        XLink を入れておくべきである。
-->
<!ENTITY % XML-EVENTS.xmlns.extra.attrib "" >


<!-- セクション B: XML 修飾名 ::::::::::::::::::::::::::::::::::::::: -->

<!-- 6. このセクションでは、 XML Events の全要素型のための名前空間-修飾名
        の提供に使用する引数実体を宣言する。
-->

<!ENTITY % xml-events.listener.qname  "%XML-EVENTS.pfx;listener" >


<!-- 次は、 XML Event 属性の組み込みを望む他の名前空間の要素の属性集合内で
     用いるための引数実体を宣言する。この場合 XML-EVENTS.pfx が常に定義されて
     いるべきであることに注意。                                    -->

<!ENTITY % xml-events.attrs.qname
   "%XML-EVENTS.pfx;event            NMTOKEN      #IMPLIED
    %XML-EVENTS.pfx;observer         IDREF        #IMPLIED
    %XML-EVENTS.pfx;target           IDREF        #IMPLIED
    %XML-EVENTS.pfx;handler          %URI.datatype;        #IMPLIED
    %XML-EVENTS.pfx;phase            (capture|default) #IMPLIED
    %XML-EVENTS.pfx;propagate        (stop|continue) #IMPLIED
    %XML-EVENTS.pfx;defaultAction    (cancel|perform) #IMPLIED"
    >

<!-- xml-events-qname-1.mod の終わり -->

A.2. XML Events モジュール

<!-- ...................................................................... -->
<!-- XML Events モジュール .............................................. -->
<!-- file: xml-events-1.mod

     これは XML Events - XML のための Events モジュール、である。
     DOM イベントモデルへのアクセスの再定義である。

     Copyright 2000-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved.

     この DTD モジュールは次の PUBLIC 及び SYSTEM 識別子で識別される:

       PUBLIC "-//W3C//ENTITIES XML Events 1.0//EN"
       SYSTEM "http://www.w3.org/MarkUp/DTD/xml-events-1.mod"

     改訂:
     (なし)
     ....................................................................... -->


<!-- XML Events は listener 要素とその属性を定義する                -->

<!ENTITY % xml-events.listener.content "EMPTY" >

<!ELEMENT %xml-events.listener.qname; %xml-events.listener.content;>
<!ATTLIST %xml-events.listener.qname;
    id               ID           #IMPLIED
    event            NMTOKEN      #REQUIRED
    observer         IDREF        #IMPLIED
    target           IDREF        #IMPLIED
    handler          %anyURI.datatype;        #IMPLIED
    phase            (capture|default) #IMPLIED
    propagate        (stop|continue) #IMPLIED
    defaultAction    (cancel|perform) #IMPLIED
>

<!-- xml-events-1.mod の終わり -->

B. Schema 実装

この附属書は 標準情報 である。

XML Events のスキーマ実装は、 [XHTMLSCHEMAMOD] に定められる必要要件に適合する。この勧告案に定められる XML Events モジュールについて、それは属性モジュールと要素モジュールに分割される。

B.1. 属性モジュール

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    targetNamespace="http://www.w3.org/2001/xml-events" 
    xmlns:ev="http://www.w3.org/2001/xml-events" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
                        http://www.w3.org/2001/XMLSchema.xsd" 
    elementFormDefault="unqualified" 
    blockDefault="#all" 
    finalDefault="#all" 
    attributeFormDefault="unqualified">

  <xs:annotation>
    <xs:documentation>
      これは XML Events グローバル属性のための XML Schema である。

      URI: http://www.w3.org/MarkUp/SCHEMA/xml-events-attribs-1.xsd
      $Id: xml-events-attribs-1.xsd,v 1.5 2003/08/02 09:36:54 mimasa Exp $
    </xs:documentation>
    <xs:documentation source="xml-events-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      XML Event 属性
        
        これらの「グローバルな」イベント属性は XML Events 仕様の
        「オブザーバ要素に属性を直接つける」において定義される。
    </xs:documentation>
  </xs:annotation>

  <xs:attribute name="event" type="xs:NMTOKEN"/>
  <xs:attribute name="observer" type="xs:IDREF"/>
  <xs:attribute name="target" type="xs:IDREF"/>
  <xs:attribute name="handler" type="xs:anyURI"/>
  <xs:attribute name="phase" default="default">
    <xs:simpleType>
      <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="capture"/>
        <xs:enumeration value="default"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="propagate" default="continue">
    <xs:simpleType>
      <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="stop"/>
        <xs:enumeration value="continue"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="defaultAction" default="perform">
    <xs:simpleType>
      <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="cancel"/>
        <xs:enumeration value="perform"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>

  <xs:attributeGroup name="XmlEvents.attlist">
    <xs:attribute ref="ev:event"/>
    <xs:attribute ref="ev:observer"/>
    <xs:attribute ref="ev:target"/>
    <xs:attribute ref="ev:handler"/>
    <xs:attribute ref="ev:phase"/>
    <xs:attribute ref="ev:propagate"/>
    <xs:attribute ref="ev:defaultAction"/>
  </xs:attributeGroup>

</xs:schema>

B.2. XML Events モジュール

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    targetNamespace="http://www.w3.org/2001/xml-events" 
    xmlns="http://www.w3.org/2001/xml-events" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
                        http://www.w3.org/2001/XMLSchema.xsd" 
    elementFormDefault="unqualified" 
    blockDefault="#all" 
    finalDefault="#all" 
    attributeFormDefault="unqualified">

  <xs:annotation>
    <xs:documentation>
      これは XML Events 用の XML Schema である。

      URI: http://www.w3.org/MarkUp/SCHEMA/xml-events-1.xsd
      $Id: xml-events-1.xsd,v 1.6 2003/08/02 09:36:54 mimasa Exp $
    </xs:documentation>
    <xs:documentation source="xml-events-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      XML Events 要素 listener
      
        このモジュールは XML Events の listener 要素を定義する。
        この要素も用いてイベントリスナーを定義できる。このモジュ
        ールは xml-events-attribs-1.xsd で定義される属性グループ
        XmlEvents.attlist に依存している。
    </xs:documentation>
  </xs:annotation>

  <xs:attributeGroup name="listener.attlist">
    <xs:attribute name="event" use="required" type="xs:NMTOKEN"/>
    <xs:attribute name="observer" type="xs:IDREF"/>
    <xs:attribute name="target" type="xs:IDREF"/>
    <xs:attribute name="handler" type="xs:anyURI"/>
    <xs:attribute name="phase" default="default">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="capture"/>
          <xs:enumeration value="default"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="propagate" default="continue">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="stop"/>
          <xs:enumeration value="continue"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="defaultAction" default="perform">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="cancel"/>
          <xs:enumeration value="perform"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:attributeGroup>

  <xs:complexType name="listener.type">
    <xs:attributeGroup ref="listener.attlist"/>
  </xs:complexType>

  <xs:element name="listener" type="listener.type"/>

</xs:schema>

C. 参考文献

この附属書は 標準情報 である。

C.1. 標準の参考文献

[DOM2EVENTS]
"Document Object Model (DOM) Level 2 Events Specification", W3C 勧告, T. Pixley, ed., 13 November 2000.
入手先: http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113
最新版 の入手先: http://www.w3.org/TR/DOM-Level-2-Events
[XML]
"Extensible Markup Language (XML) 1.0 (Second Edition)", W3C 勧告, T. Bray et al., eds., 6 October 2000.
入手先: http://www.w3.org/TR/2000/REC-xml-20001006
最新版 の入手先: http://www.w3.org/TR/REC-xml
[SCHEMA]
"XML Schema Part 2: Datatypes", W3C 勧告, P. V. Biron et al., eds., 2 May 2001.
入手先: http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/
最新版 の入手先: http://www.w3.org/TR/xmlschema-2/
[RFC2119]
"Key words for use in RFCs to indicate requirement levels", RFC 2119, S. Bradner, March 1997.
入手先: http://www.rfc-editor.org/rfc/rfc2119.txt
[XMLNAMES]
"Namespaces in XML", W3C 勧告, T. Bray et al., eds., 14 January 1999.
入手先: http://www.w3.org/TR/1999/REC-xml-names-19990114
最新版 の入手先: http://www.w3.org/TR/REC-xml-names

C.2. 他の参考文献

[HTML4]
"HTML 4.01 Specification", W3C 勧告, D. Raggett et al., eds., 24 December 1999.
入手先: http://www.w3.org/TR/1999/REC-html401-19991224
最新版 の入手先: http://www.w3.org/TR/html4
[SMIL20]
"Synchronized Multimedia Integration Language (SMIL 2.0)", W3C 勧告, J. Ayars et al., eds., 7 August 2001.
入手先: http://www.w3.org/TR/2001/REC-smil20-20010807/
最新版 の入手先: http://www.w3.org/TR/smil20
[SVG]
"Scalable Vector Graphics (SVG) 1.0 Specification", W3C 勧告, J. Ferraiolo, ed., 4 September 2001.
入手先: http://www.w3.org/TR/2001/REC-SVG-20010904/
最新版 の入手先: http://www.w3.org/TR/SVG/
[XHTML]
"XHTML™ 1.0: The Extensible HyperText Markup Language (Second Edition)". S. Pemberton et al., 26 January 2000, revised 1 August 2002.
入手先: http://www.w3.org/TR/2002/REC-xhtml1-20020801
最新版 の入手先: http://www.w3.org/TR/xhtml1
[XHTMLMOD]
"Modularization of XHTML™", W3C 勧告, M. Altheim et al., eds., 10 April 2001.
入手先: http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410
最新版 の入手先: http://www.w3.org/TR/xhtml-modularization
[XHTMLSCHEMAMOD]
"Modularization of XHTML™ in XML Schema", W3C Working Draft, D. Austin et al., eds., 3 October 2003, 作業進行中.
入手先: http://www.w3.org/TR/2003/WD-xhtml-m12n-schema-20031003
最新版 の入手先: http://www.w3.org/TR/xhtml-m12n-schema

D. 謝辞

本項は参考情報である。

本文書は Ted Wugofski (Openwave) によって書き起こされた。

本仕様の開発への多大なる貢献につき、特に感謝する: Mark Baker (Sun Microsystems), Wayne Carr (Intel Corporation), Warner ten Kate (Philips Electronics), Patrick Schmitz, Peter Stark (Ericsson)

出版時における、W3C HTML 作業班の参加者は: