XML Events - Deutsche Übersetzung

Fassung vom 03.11.2003

Die einzige normative Version ist die englische Version unter:
http://www.w3.org/TR/2003/REC-xml-events-20031014

Diese Übersetzung ist zu finden unter:
http://www.schumacher-netz.de/TR/2003/REC-xml-events-20031014-de.html

Diese Übersetzung kann Fehler enthalten. Kommentare oder Korrekturvorschläge zu dieser deutschen Übersetzung senden Sie dem Übersetzer bitte per Email.

Weitere Übersetzungen zum Thema HTML und XML finden Sie auf Schumacher-Netz.de, unter edition-w3c (Buchprojekt von Stefan Mintert) oder direkt beim W3C (http://www.w3.org/Consortium/Translation/).

Übersetzer: Stefan Schumacher (sts@schumacher-netz.de)
Urheberrecht


W3C

XML-Ereignisse (XML Events)

Eine Ereignissyntax für XML

W3C-Empfehlung vom 14. Oktober 2003

Diese Version:
http://www.w3.org/TR/2003/REC-xml-events-20031014
Aktuelle Version:
http://www.w3.org/TR/xml-events
Vorherige Version:
http://www.w3.org/TR/2003/PR-xml-events-20030804
Version mit Markierungen der Unterschiede zur Vorversion:
xml-events-diff.html
Editoren:
Shane McCarron, Applied Testing and Technology, Inc.
Steven Pemberton, CWI/W3C®
T. V. Raman, IBM Corporation

Bitte konsultieren Sie die Errata für dieses Dokument, die eventuell normative Korrekturen enthalten können.

Dieses Dokument ist ebenso in diesen nicht normativen Formaten erhältlich: PostScript-Version, PDF-Version, ZIP-Archiv und Gezipptes TAR-Archiv.

Die englische Version dieser Spezifikation ist die einzige normative Version . Nicht normative Übersetzungen können ebenfalls verfügbar sein.


Kommentar des Übersetzers

In dieser Spezifikation sind Kommentare des Übersetzters in dieser Form angegeben. Als div in einem eigenen Kasten oder im Text unterlegt mit der gleichen Hintergrundfarbe.
Diese Kommentare sind nicht Teil der Spezifikation und sollen nur als Hilfe oder Wegweiser dienen, um Hintergrundinformationen zu geben oder eine komplexe Schreibweise in der Spezifikation aufzulockern. Die Kommentare unterliegen dem Urheberrecht des Übersetzers.

Zusammenfassung

Das in dieser Spezifikation definierte XML-Ereignismodul bietet XML-Sprachen die Möglichkeit, Ereignis-Listener und diesbezügliche Ereignis-Handler mit Ereignisschnittstellen des Document Object Model (DOM) Level 2 einheitlich zu verbinden [DOM2EVENTS]. Als Ergebnis erhält man einen interoperablen Weg, ein bestimmtes Verhalten mit Dokument-Markup zu verknüpfen.

Status dieses Dokuments

Dieser Abschnitt beschreibt den Status dieses Dokuments zur Zeit seiner Veröffentlichung. Andere Dokumente können dieses Dokument eventuell ablösen. Eine Liste der aktuellen W3C-Publikationen und die aktuelle Revision dieses technischen Berichts können im Index der technischen Berichte des W3C unter http://www.w3.org/TR/ gefunden werden.

Dieses Dokument ist eine Empfehlung des W3C. Es wurde von W3C-Mitgliedern und interessierten Gruppen überprüft und vom Direktor als W3C-Empfehlung anerkannt. Es ist ein stabiles Dokument und kann als Referenzmaterial verwendet werden oder von einem anderen Dokument als normative Referenz zitiert werden. Die Intention des W3C bei der Erstellung der Empfehlung ist, Aufmerksamkeit auf diese Spezifikation zu lenken und ihre weitläufige Verbreitung zu fördern. Dies verbessert die Funktionalität und die Interoperabilität des Webs. Eine Test-Suite für XML-Ereignissse wurde als Teil der öffentlichen XForms 1.0 Test Suite zusammen mit einem Implementierungsbericht entwickelt.

Dieses Dokument wurde von der W3C HTML-Arbeitsgruppe (nur Mitglieder) als Teil der HTML Activity erarbeitet. Die Ziele der HTML-Arbeitsgruppe werden in der Charta der HTML-Arbeitsgruppe besprochen. Patentoffenlegungen, die relevant für diese Spezifikation sind, können auf der Seite für Patentoffenlegungen der Arbeitsgruppe gefunden werden.

Bitte senden Sie Fehlerberichte zu dieser Spezifikation an www-html-editor@w3.org (Archiv). Es ist nicht angebracht, Diskussionsbeiträge per E-Mail an diese Adresse zu schicken. Die öffentliche Diskussion sollte auf www-html@w3.org (Archiv) stattfinden.

Inhalt

1. Einleitung

Dieser Abschnitt ist informativ.

Ein Ereignis ist die Repräsentation irgendeiner asynchronen Erscheinung (wie einem Mausklick auf die Darstellung eines Elements oder einem arithmetischer Fehler im Wert eines Attributs des Elements oder irgendeine von undenkbar vielen anderen Möglichkeiten), die mit einem Element (gezielt (target) auf ein Element) in einem XML-Dokument in Beziehung gesetzt wird.

Im DOM-Ereignismodell [DOM2EVENTS] wird ein allgemeines Verhalten beschrieben. Tritt ein Ereignis auf, wird es dispatched. Dies geschieht in Form einer Durchleitung durch den Dokumentbaum in einer Phase, die capture genannt wird, zu dem Element, an dem das Ereignis aufgetreten ist (benannt als sein Ziel -- target). Dort wird es eventuell in einer bubbling-Phase wieder zurück durch den Baum geschickt. Im Allgemeinen kann auf ein Ereignis bei jedem Element im Pfad (ein observer) in jeder Phase durch die Veranlassung einer Aktion, und/oder durch Stoppen des Ereignisses, und/oder durch Abbrechen der voreingestellten Reaktion auf das Ereignis reagiert werden. Das folgende Diagramm illustriert dieses:

Event propagation flow diagram
Ereignisfluss in DOM2: Ein Ereignis, das auf ein Element gerichtet ist (markiert als target), durchläuft den Baum von der Wurzel bis hin zum Ziel in einer Phase, die capture genannt wird. Sofern der Ereignistyp es erlaubt, tritt das Ereignis die Reise zurück durch den Baum auf der gleichen Route an. Diese Phase nennt sich bubbling. Jeder Knoten auf der Route, eingeschlossen der Wurzel- und der Zielknoten, kann ein observer sein: das ist sozusagen ein eventuell daran angehängter Handler, der aktiviert wird, wenn das Ereignis in einer der Phasen vorbeikommt. Ein Handler kann nur in einer Phase aufpassen. Um in beiden Phasen zu horchen, müssen zwei Handler angehängt werden.

Eine Aktion ist eine Möglichkeit, auf ein Ereignis zu antworten; ein Handler ist eine mögliche Angabe für solch eine Aktion, zum Beispiel die Verwendung von Skripten oder eine andere Methode. Ein Listener ist die Bindung solch eines Handlers an ein Ereignis, das auf irgendein Element im Dokument zielt.

HTML [HTML4] bindet Ereignisse an ein Element, indem der Ereignisname in einen Attributnamen kodiert wird, so dass der Wert des Attributs die Aktion für das Ereignis bei diesem Element ist. Diese Methode hat zwei grundsätzliche Nachteile: einerseits verankert es die Ereignisse in die Sprache, so dass die Sprache verändert werden muss, um ihr neue Ereignisse hinzuzufügen. Andererseits wird der Autor gezwungen, den Inhalt des Dokuments mit den Skriptangaben und Ereignis-Handlern zu vermischen, anstatt zu erlauben, diese herauszutrennen. SVG [SVG] verwendet eine ähnliche Methode.

Die Definition einer neuen Version von HTML zeigte die Notwendigkeit für eine erweiterbare Methode zur Ereignisangabe. Die Designanforderungen waren die folgenden:

Das DOM gibt ein Ereignismodell an, das die folgenden Eigenschaften bereitstellt:

Element-Listener und seine Attribute, die in dieser Spezifikation definiert sind, sind die Methode, um DOM Level 2-Ereignisse eines Elements an einen Ereignis-Handler zu binden. Sie beinhalten verschiedene Aspekte der DOM Level 2-Ereignisschnittstelle. Dadurch stellen sie Markup-Angaben der durchzuführenden Aktionen bereit, die während der verschiedenen Phasen der Ereignisdurchleitung getätigt werden müssen.

Dieses Dokument gibt weder bestimmte Ereignisse an, noch schreibt es eine bestimmte Methode vor, Aktionen anzugeben. Diese Definitionen werden jeder Bezeichnersprache selbst überlassen, welche die hier beschriebenen Möglichkeiten nutzt.

2. Konformitätsanforderungen

Dieser Abschnitt ist normativ.

Die Schlüsselworte "MÜSSEN", "NICHT DÜRFEN", "ERFORDERLICH", "SOLLTEN", "SOLLTEN NICHT", "EMPFOHLEN", "EVENTUELL" und "OPTIONAL" in diesem Dokument sind zu interpretieren wie in [RFC2119] beschrieben.

2.1.Konformität der Dokumente

XML-Ereignisse ist kein stand-alone Dokumenttyp. Die Spezifikation verfolgt die Intention, in andere Wirtsprachen, wie zu Beispiel XHTML, integriert zu werden. Ein konformes Dokument zu XML-Ereignisse ist ein Dokument, das nur die Eigenschaften fordert, die in dieser Spezifikation als erforderlich beschrieben sind, und die Eigenschaften, die in seiner Wirtsprache als erforderlich beschrieben sind. Solch ein Dokument muss alle der folgenden Kriterien erfüllen:

  1. Das Dokument muss konform zu den Beschränkungen sein, die in Appendix B - Schema-Implementierung oder Appendix A - DTD-Implementierung beschrieben werden, kombiniert mit den Beschränkungen, die in der Implementierung seiner Wirtsprache beschrieben werden.

  2. Das Dokument muss eine xmlns-Deklaration für den Namensraum von XML-Ereignisse enthalten [XMLNAMES]. Der Namensraum für XML-Ereignisse ist definiert als http://www.w3.org/2001/xml-events. Ein Start-Tag eines Wurzelelements könnte zum Beispiel so aussehen:

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

2.2. Konformität der Wirtsprachen

Wird XML-Ereignisse in eine Wirtsprache eingeschlossen, müssen alle Eigenschaften, die in dieser Spezifikation gefordert werden, in der Wirtsprache eingeschlossen werden. Zusätzlich müssen alle Elemente und Attribute, die in dieser Spezifikation definiert sind, in das Inhaltsmodell der Wirtsprache aufgenommen werden.

2.3.Konformität der Benutzerprogramme

Ein konformes Benutzerprogramm muss alle Eigenschaften unterstützen, die in dieser Spezifikation gefordert werden.

3. Das XML-Ereignismodul

Dieser Abschnitt ist normativ.

Diese Spezifikation definiert ein Modul namens XML-Ereignisse (XML Events). Das XML-Ereignismodul verwendet den XML-Namensraum-Identifier http://www.w3.org/2001/xml-events. [XMLNAMES]

Beispiele in diesem Dokument, die das Namensraumpräfix ev verwenden, nehmen alle eine xmlns-Deklaration xmlns:ev="http://www.w3.org/2001/xml-events" an geeigneter Stelle im Dokument an. Alle Beispiele sind informativ.

Der Rest dieses Abschnitts beschreibt die Elemente und Attribute in diesem Modul, die Semantik und stellt eine abstrakte Moduldefinition zur Verfügung wie in [XHTMLMOD] gefordert wird.

Das XML-Ereignismodul unterstützt das folgende Element und die folgenden Attribute:

Element Attribute Minimales Inhaltsmodell
listener event ( NMTOKEN),
observer ( IDREF),
target ( IDREF),
handler ( URI),
phase ("capture" | "default"*),
propagate ("stop" | "continue"*),
defaultAction ("cancel" | "perform"*),
id ( ID)
EMPTY

Implementierungen: DTD, XML Schema

3.1.Das Element listener

Das Element listener unterstützt eine Untermenge der Schnittstelle EventListener des DOM. Es wird verwendet, um Ereignis-Listener zu deklarieren und sie mit bestimmten Knoten im DOM zu registrieren. Es hat die folgenden Attribute:

event
Das erforderliche Attribut event gibt den Ereignistyp an, für den der Listener registriert wird. Wie durch [DOM2EVENTS] angegeben ist, sollte der Wert des Attributs ein XML-Name sein [XML].
observer
Das optionale Attribut observer gibt die id des Elements an, zu dem der Ereignis-Listener registriert werden muss. Ist dieses Attribut nicht verfügbar, ist der observer das Element, für das das event-Attribut angegeben ist (siehte später unter Attribute einem Observer-Element direkt zuordnen) oder dem Elternteil dieses Elements (siehe später unter Attribute einem Handler-Element direkt zuordnen).
target
Das optionale Attribut target gibt die id des Zielelements des Ereignisses an (zum Beispiel der Knoten, der das Ereignis verursacht hat). Ist dieses Attribut verfügbar, werden nur Ereignisse vom entsprechenden Ereignis-Handler verarbeitet, die beide Attribute, event und target, besitzen. Ohne Frage sollte das Zielelement, vorgegeben durch den Weg, den Ereignisse nehmen, ein Nachkomme des Observer-Elements oder das Observer-Element selbst sein.

Die Verwendung dieses Attributs erfordert sorgfalt; wenn Sie zum Beispiel angeben

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

wobei para1 irgendein Nachfahre des folgenden Knoten ist

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

und der Benutzer auf das Wort draft klickt, wird das Element <em> und nicht <a> das Ziel sein und so wird der Handler nicht aktiviert; um alle Mausklicks auf das Element <a> und seine Kinder abzufangen, verwenden Sie observer="link1" und kein target-Attribut.

handler
Das optionale handler-Attribut gibt den URI-Verweis der Quelle an, welche die Aktion definiert, die ausgeführt werden soll, wenn das Ereignis den Observer erreicht. (Diese Spezifikation gibt nicht vor, welche Form dieses Element annehmen sollte: Weiteres im Abschnitt Ereignis-Handler). Ist dieses Attribut nicht vorhanden, ist der Handler das Element, welches das event-Attribut enthält (siehe unten Attribute einem Handler-Element direkt zuordnen).
phase
Das optionale phase-Attribut gibt an, wann (zu welcher DOM 2-Ereignisverlaufsphase) der Listener vom gewünschten Ereignis aktiviert wird.
capture
Der Listener ist während der capture-Phase aktiviert.
default
Der Listener ist während der bubbling- oder target-Phase aktiviert.

Das voreingestellte Verhalten ist phase="default".

Beachten Sie, dass nicht alle Ereignisse eine bubbling-Phase durchlaufen. In diesem Fall kann mit phase="default" das Ereignis nur verarbeitet werden, wenn Sie das Ereignisziel zum Observer machen.

propagate
Das optionale propagate-Attribut gibt an, ob dem Ereignis nach der Verarbeitung aller Listener am aktuellen Knoten gestattet wird, seinen Weg fortzusetzen (entweder in der capture- oder in der bubbling-Phase).
stop
Ereigniswanderung stoppt
continue
Ereigniswanderung fährt fort (es sein denn, sie wird anders gestoppt, zum Beispiel durch ein Skript oder andere Listener).

Das voreingestellte Verhalten ist propagate="continue".

defaultAction
Das optionale Attribut defaultAction gibt an, ob nach der Verarbeitung aller Listener für das Ereignis, die voreingestellte Aktion für das Ereignis (sofern vorhanden) ausgeführt werden soll oder nicht. Zum Beispiel ist in XHTML die voreingestellte Aktion für einen Mausklick auf ein <a>-Element oder eines seiner Nachfahren, die Verfolgung des Verweises.
cancel
Kann der Ereignistyp abgebrochen werden, wird die voreingestellte Aktion abgebrochen.
perform
Die voreingestellte Aktion wird ausgeführt (es sein denn, sie wird anders abgebrochen, zum Beispiel durch ein Skript oder durch andere Listener).

Der voreingestellte Wert ist defaultAction="perform".

Beachten Sie, dass nicht alle Ereignisse abgebrochen werden können, in diesem Fall wird das Attribut ignoriert.

id
Das optionale Attribut id ist eine dokumentweit einzigartiger Identifier. Der Wert dieses Identifiers wird oft dazu verwendet, das Element über eine DOM-Schnittstelle zu manipulieren.

Beachten Sie, dass observer = "<element-id>" und event = "<event-type>" ähnlich zum Attribut begin = "<element-id>.<event-type>" in SMIL EventTiming [SMIL20] sind.

3.1.1. Beispiele zur Verwendung von listener

  1. Dieses Beispiel verbindet den Handler im Element mit #doit, der aktiviert wird, wenn das Ereignis activate beim Element mit id="button1" oder irgendeiner seiner Kinder auftritt. Die Aktivierung wird während der bubbling-Phase geschehen, oder wenn das Ereignis am Observer-Element selbst auftritt, wenn das Ereignis das Element erreicht (target-Phase).

    <listener event="activate" observer="button1" handler="#doit"/>
    
  2. Dies verbindet den Handler mit #overflow-handler, der aktiviert wird, wenn das Ereignis overflow beim Element mit id="expr1" eintritt und in der bubbling-Phase hinauf zum Element mit id="prog1" kommt.

    <listener event="overflow" observer="prog1" target="expr1"
            handler="#overflow-handler"/>
    
  3. Dies verbindet den Handler mit #popup, das aktiviert wird, sooft ein activate-Ereignis beim Element mit id="embargo" oder irgendeiner seiner Kinder auftritt. Weil es während der capture-Phase aktiviert wird, und die Wanderung gestoppt wird, wirkt sich dies (unabhängig davon, was die Handler machen) auf alle Kindelemente des embargo-Elements insofern aus, dass sie keine activate-Ereignisse zu Gesicht bekommen.

    <listener event="activate" observer="embargo" handler="#popup"
            phase="capture" propagate="stop"/>
    
  4. Dies verbindet einen Handler eines anderen Dokuments.

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

3.2. Attribute einem Observer-Element direkt zuordnen

Alle Attribute des listener-Elements mit Ausnahme von id können als globale Attribute verwendent werden, wie in Namensräume in XML [XMLNAMES] definiert ist, um das Attribut einem anderen Element zuzuordnen.

Beachten Sie, dass dies bedeutet, dass das <listener>-Element streng genommen redundant ist, weil das folgende

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

die gleiche Auswirkung hat wie

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

Trotzdem wurde das Element <listener> aus funktionellen Gründen beibehalten.

Wird das Attribut observer weggelassen (nicht jedoch das handler-Attribut), dann ist das Element, dem die anderen Attribute angehängt sind, das Observer-Element.

3.2.1. Beispiele zu einem Observer-Element mit angehängten Attributen

  1. Dieses erste Beispiel wird den Handler, identifiziert durch #popper, mit dem Element <a> verbinden und die voreingestellte Aktion für dieses Ereignis abbrechen.

    <a href="doc.html" ev:event="activate" ev:handler="#popper"
       ev:defaultAction="cancel">The document</a>
    
  2. Dies wird den Handler, zu finden unter #handle-overflow, für das Ereignis overflow mit dem aktuellen Element verbinden.

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

3.3. Attribute einem Handler-Element direkt zuordnen

Wird das handler-Attribut weggelassen, wenn die globalen Attribute einem Element zugeordnet werden, dann ist das Element, dem die anderen Attribute zugeordnet werden, das Handler-Element.

Beachten Sie: Weil die Attribute observer und target IDREFs sind, müssen in diesem Fall die Handler- und Observer-/Zielelemente im gleichen Dokument sein (während in anderen Fällen, weil das handler-Attribut ein URI ist, das Handler-Element in einem anderen Dokument sein kann).

Wird das Attribut observer gleichfalls weggelassen, dann ist der Elternteil des Handler-Elements das Observer-Element.

3.3.1. Beispiele zu einem Handler-Element mit angehängten Attributen

  1. In diesem Fall ist das Element der Handler für das submit-Ereignis des Elements mit id="form1".

    <script type="application/x-javascript"
            ev:event="submit" ev:observer="form1">
       return docheck(event);
    </script>
    
  2. In diesem Fall ist das Element <action> der Handler für das Ereignis q-submit und der Observer ist das Element questionnaire.

    <questionnaire submissionURL="/q/tally">
        <action ev:event="q-submit">
          ...
        </action>
        ...
     </questionnaire>
    
  3. Das Element <script> ist der Handler für das Ereignis click; das Element <img> ist der Observer.

    <img src="button.gif" alt="OK">
        <script ev:event="activate" type="application/x-javascript">
            doactivate(event);
        </script>
    </img>
    

    Kommentar des Übersetzers:

    Ein Element kann zum Beispiel durch ein click-Ereignis aktiviert (activate) werden. Das activate-Ereignis wird in DOM2-Ereignisse, Abschnitt 1.6.1 beschrieben.

  4. Das Element <onevent> ist der Handler für das Ereignis enterforward. Das Element <card> ist der Observer.

    <card>
        <onevent ev:event="enterforward">
            <go href="/url"/>
        </onevent>
        <p>
          Hello!
        </p>
    </card>
    
  5. Das Element <catch> ist der Handler für das Ereignis nomatch. Der Observer ist das Element <field>.

    <form id="launch_missiles">
      <field name="password">
        <prompt>What is the code word?</prompt>
        <grammar>
          <rule id="root" scope="public">rutabaga</rule>
        </grammar>
        <help>It is the name of an obscure vegetable.</help>
        <catch ev:event="nomatch">
          <prompt>Security violation!</prompt>
          <submit next="apprehend_felon" namelist="user_id"/>
        </catch>
      </field>
      <block>
        <goto next="#get_city"/>
      </block>
    </form>
    
  6. Dieses Beispiel zeigt drei Handler für verschiedene Ereignisse. Der Observer für alle drei ist das Element <secret>

    <secret ref="/login/password">
        <caption>Please enter your password</caption>
        <info ev:event="help">
            Mail help@example.com in case of problems
        </info>
        <info ev:event="hint">
            A pet's name
        </info>
        <info ev:event="alert">
            This field is required
        </info>
    </secret>
    

3.4. Zusammenfassung zu den Voreinstellungen für Observer- und Handler-Attribute

Die folgende Tabelle fasst zusammen, welche Elemente die Rolle des Observers oder Handlers spielen, wenn die relevanten Attribute weggelassen werden.

Die Auswirkungen von weggelassenen Observer- und Handler-Attributen
Handler vorhanden Handler weggelassen
Observer vorhanden (wie deklariert) Element ist Handler
Observer weggelassen Element ist Observer Element ist Handler
Elternteil ist Observer

3.5. Ereignis-Handler

Diese Spezifikation stellt nicht die Anforderung, dass eine XML-Applikation, die XML-Ereignisse verwendet, irgendeine bestimmte Methode verwenden muss, um Handler anzugeben. Jedoch sind die Beispiele, insbesondere jene im Abschnitt über die direkte Zuordnung der Attribute zu einem Handler, darauf ausgelegt, Beispiele zu geben, wie sie angegeben werden könnten.

Es wurde jedoch erkannt, dass zwei Methoden oft auftauchen werden: Skripte (wie das XHTML-Element <script>) und deklaratives Markup, das XML-Elemente verwendet (so wie das Element <onevent> bei WML). Eine unterstützende Spezifikation wird Markup zur Verfügung stellen, das diese Methoden unterstützt.

Kommentar des Übersetzers

Markup, an einigen Stellen auch als Bezeichner beschrieben, ist zum Beispiel, wie hier gemeint, ein Element in spitzen Klammern. Die genaue Definition von Markup ist im Abschnitt 2.4 der XML-Spezifikation zu finden. So ist zum Beispiel auch eine Verarbeitungsanweisung (processing instruction) Markup.

3.6. Das XML-Ereignisprofil Basic

Das Basic XML Events Profile gestattet Beschränkungen zum Gebrauch des XML-Ereignismoduls, um die Verarbeitung auf kleinen Geräten einfacher zu gestalten.

Das Profil Basic gestattet folgende Beschränkungen beim Gebrauch des Elements listener und seinen Attributen und beim Gebrauch der Attribute des Elements listener als globale Attribute.

  1. Externe Ereignis-Handler

    Die Fähigkeit, externe Ereignis-Handler verarbeiten zu können, ist nicht erforderlich. Wird das handler-Attribut zum listener-Element verwendet oder wird das globale handler-Attribut verwendet, sollte der Handler, der im Wert dieses Attributs angegeben ist, im aktuellen Dokument sein.

    Zum Beispiel ist das Folgende gestattet:

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

    während das Folgende nicht verarbeitet werden muss:

    <listener event="click" target="#button1" handler="doc2.html#clicker"/>
    
  2. Anordnung von Ereignisbindungen

    Die Bindung eines Ereignis-Handlers an einen Observer kann lexikalisch vor dem Ende des Observer-Elements erforderlich sein. Mit anderen Worten dürfte eine listener-Bindung an einen Observer nicht nach dem schließenden Tag des Observer-Elements auftauchen und ein Ereignis-Handler, der die Attribute trägt, um ihn an den Observer zu binden, dürfte ebenfalls nicht nach dem schließenden Tag des Observer-Elements erscheinen.

4. Ereignistypen benennen

Dieser Abschnitt ist informativ.

Diese Spezifikation gibt nicht normativ an, wie Sprachdesigner die Ereignisse benennen sollten (zum Beispiel die verwendeten Werte im event-Attribut).

Zukünftige Versionen von DOM-Ereignissen gestatten jedoch voraussichtlich Namensraum gebundene Ereignisnamen, deshalb sind Sprachdesigner angehalten, nicht das Doppelpunktzeichen ":" in Ereignisnamen zu verwenden.

Zahlreiche Ereignistypen sind in DOM2 [DOM2EVENTS] definiert, darauf sollten Sie sich in Bezug auf deren Namen und Semantik beziehen.

A. DTD-Implementierung

Dieser Anhang ist normativ.

Die DTD-Implementierung von XML-Ereignisse ist konform zu den Anforderungen, die in [XHTMLMOD] definiert sind. Daher stellt sie ein Untermodul für qualifizierte Namen zur Verfügung, sowie eine Modul-Datei für das XML-Ereignismodul, definiert in dieser Proposed Recommendation.

Kommentar des Übersetzers

Hier scheint ein Rest aus der Entwicklungsphase stehengeblieben zu sein. Hier soll es heißen: definiert in dieser Recommendation/Empfehlung, nämlich XML Events.

A.1. Modul für qualifizierte Namen

Beachten Sie, dass dieses Modul das Parameter-Entity %xml-events-attrs.qname; definiert. Dieses Entity ist zur Verwendung in den Attributlisten von Elementen in jeder Wirtsprache gedacht, die die Verwendung von Ereignisattributen in Elementen in ihrem eigenen Namensraum gestattet. In diesem Fall sollte der Wirtsprachentreiber (Anmerkung d. Übersetzters: zum Beispiel eine DTD) ein Parameter-Entity %XML-EVENTS.prefixed; auf INCLUDE setzen und ein Parameter-Entity %XML-EVENTS.prefix; auf einen Wert, der das Präfix für das XML-Ereignisattribut ist.

<!-- ....................................................................... -->
<!-- XML Events Qname Module  ............................................ -->
<!-- file: xml-events-qname-1.mod
     This is XML Events - the Events Module for XML,
     a definition of access to the DOM events model.
     Copyright 2000-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved.
     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
       PUBLIC "-//W3C//ENTITIES XML Events Qnames 1.0//EN"
       SYSTEM "http://www.w3.org/MarkUp/DTD/xml-events-qname-1.mod"
     Revisions:
     (none)
     ....................................................................... -->
<!-- XML Events Qname (Qualified Name) Module
     This module is contained in two parts, labeled Section 'A' and 'B':
       Section A declares parameter entities to support namespace-
       qualified names, namespace declarations, and name prefixing
       for XML Events and extensions.
       Section B declares parameter entities used to provide
       namespace-qualified names for all XML Events element types:
         %listener.qname;   the xmlns-qualified name for <listener>
         ...
     XML Events extensions would create a module similar to this one.
     Included in the XML distribution is a template module
     ('template-qname-1.mod') suitable for this purpose.
-->
<!-- Section A: XML Events XML Namespace Framework :::::::::::::::::::: -->
<!-- 1. Declare a %XML-EVENTS.prefixed; conditional section keyword, used
        to activate namespace prefixing. The default value should
        inherit '%NS.prefixed;' from the DTD driver, so that unless
        overridden, the default behavior follows the overall DTD
        prefixing scheme.
-->
<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % XML-EVENTS.prefixed "%NS.prefixed;" >
<!-- 2. Declare a parameter entity (eg., %XML-EVENTS.xmlns;) containing
        the URI reference used to identify the XML Events namespace
-->
<!ENTITY % XML-EVENTS.xmlns  "http://www.w3.org/2001/xml-events" >
<!-- 3. Declare parameter entities (eg., %XML.prefix;) containing
        the default namespace prefix string(s) to use when prefixing
        is enabled. This may be overridden in the DTD driver or the
        internal subset of an document instance. If no default prefix
        is desired, this may be declared as an empty string.
     NOTE: As specified in [XMLNAMES], the namespace prefix serves
     as a proxy for the URI reference, and is not in itself significant.
-->
<!ENTITY % XML-EVENTS.prefix  "" >
<!-- 4. Declare parameter entities (eg., %XML-EVENTS.pfx;) containing the
        colonized prefix(es) (eg., '%XML-EVENTS.prefix;:') used when
        prefixing is active, an empty string when it is not.
-->
<![%XML-EVENTS.prefixed;[
<!ENTITY % XML-EVENTS.pfx  "%XML-EVENTS.prefix;:" >
]]>
<!ENTITY % XML-EVENTS.pfx  "" >
<!-- declare qualified name extensions here ............ -->
<!ENTITY % xml-events-qname-extra.mod "" >
%xml-events-qname-extra.mod;
<!-- 5. The parameter entity %XML-EVENTS.xmlns.extra.attrib; may be
        redeclared to contain any non-XML Events namespace declaration
        attributes for namespaces embedded in XML. The default
        is an empty string.  XLink should be included here if used
        in the DTD.
-->
<!ENTITY % XML-EVENTS.xmlns.extra.attrib "" >
<!-- Section B: XML Qualified Names ::::::::::::::::::::::::::::: -->
<!-- 6. This section declares parameter entities used to provide
        namespace-qualified names for all XML Events element types.
-->
<!ENTITY % xml-events.listener.qname  "%XML-EVENTS.pfx;listener" >
<!-- The following defines a PE for use in the attribute sets of elements in
     other namespaces that want to incorporate the XML Event attributes. Note
     that in this case the XML-EVENTS.pfx should always be defined. -->
<!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"
    >
<!-- end of xml-events-qname-1.mod -->

A.2.XML-Ereignismodul

<!-- ...................................................................... -->
<!-- XML Events Module .................................................... -->
<!-- file: xml-events-1.mod
     This is XML Events - the Events Module for XML.
     a redefinition of access to the DOM events model.
     Copyright 2000-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved.
     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
       PUBLIC "-//W3C//ENTITIES XML Events 1.0//EN"
       SYSTEM "http://www.w3.org/MarkUp/DTD/xml-events-1.mod"
     Revisions:
     (none)
     ....................................................................... -->
<!-- XML Events defines the listener element and its attributes -->
<!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
>
<!-- end of xml-events-1.mod -->

B.Schema-Implementierung

Dieser Anhang ist normativ.

Die Schema-Implementierung von XML-Ereignisse ist konform zu den Anforderungen, definiert in [XHTMLSCHEMAMOD]. Sie ist unterteilt in ein Attributmodul und ein Elementmodul für das XML-Ereignismodul, definiert in dieser Proposed Recommendation.

B.1.Attributmodul

<?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>
      This is the XML Schema for XML Events global attributes
      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 Attributes
        
        These "global" event attributes are defined in "Attaching
        Attributes Directly to the Observer Element" of the XML
        Events specification.
    </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-Ereignismodul

<?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>
      This is the XML Schema for XML Events
      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 element listener
        
        This module defines the listener element for XML Events.
        This element can be used to define event listeners. This
        module relies upon the XmlEvents.attlist attribute group
        defined in xml-events-attribs-1.xsd.
    </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. Quellen

Dieser Anhang ist normativ.

C.1.Normative Quellen

[DOM2EVENTS]
"Document Object Model (DOM) Level 2 Events Specification", W3C Recommendation, T. Pixley, Editor, 13. November 2000.
Verfügbar unter: http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/DOM-Level-2-Events
[XML]
"Extensible Markup Language (XML) 1.0 (Second Edition)", W3C Recommendation, T. Bray et al., Editoren, 6. Oktober 2000.
Verfügbar unter: http://www.w3.org/TR/2000/REC-xml-20001006
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/REC-xml
[SCHEMA]
"XML Schema Part 2: Datatypes", W3C Recommendation, P. V. Biron et al., Editoren, 2. Mai 2001.
Verfügbar unter: http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/xmlschema-2/
[RFC2119]
"Key words for use in RFCs to indicate requirement levels", RFC 2119, S. Bradner, März 1997.
Verfügbar unter: http://www.rfc-editor.org/rfc/rfc2119.txt
[XMLNAMES]
"Namespaces in XML", W3C Recommendation, T. Bray et al., Editoren, 14. Januar 1999.
Verfügbar unter: http://www.w3.org/TR/1999/REC-xml-names-19990114
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/REC-xml-names

C.2.Andere Quellen

[HTML4]
"HTML 4.01 Specification", W3C Recommendation, D. Raggett et al., Editoren, 24. Dezember 1999.
Verfügbar unter: http://www.w3.org/TR/1999/REC-html401-19991224
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/html4
[SMIL20]
"Synchronized Multimedia Integration Language (SMIL 2.0)", W3C Recommendation, J. Ayars et al., Editoren, 7. August 2001.
Verfügbar unter: http://www.w3.org/TR/2001/REC-smil20-20010807/
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/smil20
[SVG]
"Scalable Vector Graphics (SVG) 1.0 Specification", W3C Recommendation, J. Ferraiolo, Editor, 4. September 2001.
Verfügbar unter: http://www.w3.org/TR/2001/REC-SVG-20010904/
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/SVG/
[XHTML]
"XHTML™ 1.0: The Extensible HyperText Markup Language (Second Edition)". S. Pemberton et al., 26. Januar 2000, überarbeitet 1. August 2002.
Verfügbar unter: http://www.w3.org/TR/2002/REC-xhtml1-20020801
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/xhtml1
[XHTMLMOD]
" Modularization of XHTML™", W3C Recommendation, M. Altheim et al., Editoren, 10. April 2001.
Verfügbar unter: http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/xhtml-modularization
[XHTMLSCHEMAMOD]
"Modularization of XHTML™ in XML Schema", W3C Working Draft, D. Austin et al., Editoren, 3. Oktober 2003, work in progress.
Verfügbar unter: http://www.w3.org/TR/2003/WD-xhtml-m12n-schema-20031003
Die aktuelle Version ist verfügbar unter: http://www.w3.org/TR/xhtml-m12n-schema

Kommentar des Übersetzers

Quellen in deutscher Sprache.
[HTML4 - deutsch]
"HTML 4.01 - Deutsche Übersetzung", W3C-Empfehlung, D. Raggett und andere Editoren, 24. Dezember 1999.
Verfügbar unter: http://www.edition-w3c.de/TR/1999/REC-html401-19991224
[XML 1.0 (Zweite Auflage) - deutsch]
"XML 1.0 (Zweite Auflage) - Deutsche Übersetzung", W3C-Empfehlung, T. Bray und andere Editoren, 24. Dezember 1999.
Verfügbar unter: http://edition-w3c.de/TR/2000/REC-xml-20001006
[XMLNAMES]
"Namensräume in XML - Deutsche Übersetzung", W3C-Empfehlung, T. Bray et al., Editoren, 14. Januar 1999.
Verfügbar unter: http://www.schumacher-netz.de/TR/1999/REC-xml-names-19990114-de.html
Weitere Quellen in deutscher Sprache finden Sie unter http://www.w3.org/Consortium/Translation.

D. Danksagung

Dieser Abschnitt ist informativ.

Dieses Dokument wurde ursprünglich von Ted Wugofski geschrieben (Openwave).

Besonderer Dank an: Mark Baker (Sun Microsystems), Wayne Carr (Intel Corporation), Warner ten Kate (Philips Electronics), Patrick Schmitz und Peter Stark (Ericsson) für ihre signifikanten Beiträge zur fortschreitenden Entwicklung dieser Spezifikation.

Zur Zeit der Veröffentlichung waren folgende Personen Mitglieder der W3C HTML-Arbeitsgruppe: