edition W3C.de

HTML 4.01-Spezifikation

Deutsche Übersetzung

Diese Version:
http://www.edition-w3.de/TR/1999/REC-html401-19991224
Aktuelle Version:
http://www.edition-w3c.de/TR/html4
Übersetzer:
Christine Kühnel (Übersetzung, fachliche Kommentierung) <kuehnel@screenexa.net>
Stefan Mintert (Fachlektorat und fachliche Kommentierung) <www.mintert.com/stefan/mail/>
Stefan Schumacher (Übersetzung, fachliche Kommentierung) <sts@schumacher-netz.de>

Bei diesem Dokument handelt es sich um eine Übersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschützt; bitte beachten Sie die nachfolgenden Hinweise des Originaldokuments. Die Rechte an der Übersetzung liegen bei den Übersetzern und dem Verlag Addison-Wesley. Die Übersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.

Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die Übersetzer.

Kommentare der Übersetzer, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht der Übersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.

Diese Veröffentlichung ist eine Vorveröffentlichung. Kein Teil dieses Textes darf kopiert werden. Alle Rechte vorbehalten. Nach Abschluss der Arbeit wird das endgültige Dokument unter der oben angegebenen Adresse veröffentlicht. Die jetzige Veröffentlichung während der laufenden Arbeit dient zur Information von Interessierten und zur Prüfung durch die Fachöffentlichkeit. Sollten Sie Fehler finden oder Verbesserungsvorschläge haben, schicken Sie diese bitte per Mail an die Übersetzer.
Folgende Teile liegen noch in Englisch vor und müssen noch in deutscher Fassung generiert werden: (a) Gesamtinhaltsverzeichnis (b) Index


13 Objekte, Bilder und Applets

Inhaltsverzeichnis

13.1 Einführung in Objekte, Bilder und Applets

Die Multimedia-Eigenschaften von HTML gestatten Autoren die Einbindung von Bildern, Applets (Programme, die automatisch heruntergeladen und auf dem Rechner des Benutzers ausgeführt werden), Videoclips und anderen HTML-Dokumenten in ihre Seiten.

Um zum Beispiel eine PNG-Graphik in ein Dokument einzubetten, können Autoren schreiben:

<BODY>
<P>Hier ist eine Großaufnahme des Grand Canyon:
<OBJECT data="canyon.png" type="image/png">
Dies ist eine <EM>Großaufnahme</EM> des Grand Canyon.
</OBJECT>
</BODY>

Frühere Versionen von HTML gestatteten Autoren die Einbindung von Bildern (über IMG) und Applets (über APPLET). Diese Elemente haben mehrere Einschränkungen:

Um diese Probleme anzugehen, führt HTML 4 das Element OBJECT ein, das eine universelle Lösung für die allgemeine Objekteinbindung anbietet. Das OBJECT-Element erlaubt HTML-Autoren, alle für die Darstellung im Benutzerprogramm erforderlichen Informationen des Objekts anzugeben: Quelltext, Anfangswerte und Laufzeitdaten. In dieser Spezifikation wird der Begriff »Objekt« in dem Sinn verwendet, dass er alle Dinge beschreibt, die jemand in einem HTML-Dokument unterbringen möchte; andere allgemein verwendete Begriffe für diese Dinge sind: Applets, Plug-Ins, Medien-Handler usw.

Das neue Element OBJECT übernimmt so einige Aufgaben, die von bestehenden Elementen ausgeführt werden. Stellen Sie sich die folgenden Funktionalitäten vor:

Art der EinbindungSpezielles ElementAllgemeines Element
BildIMGOBJECT
AppletAPPLET(Missbilligt.)OBJECT
Ein weiteres HTML-DokumentIFRAMEOBJECT

Die Tabelle zeigt, dass jede Art der Einbindung eine spezielle und eine allgemeine Lösung hat. Das allgemeine Element OBJECT wird als Lösung für die Implementierung zukünftiger Medientypen fungieren.

Zur Einbindung von Bildern können Autoren das Element OBJECT oder das Element IMG verwenden.

Zur Einbindung von Applets sollten Autoren das Element OBJECT verwenden, weil das APPLET-Element missbilligt wird.

Zur Einbindung eines HTML-Dokuments in ein anderes, können Autoren entweder das neue Element IFRAME oder das Element OBJECT verwenden. In beiden Fällen bleibt das eingebettete Dokument unabhängig vom Hauptdokument. Visuelle Benutzerprogramme können das eingeschlossene Dokument in einem separaten Fenster innerhalb des Hauptdokuments darstellen. Bitte lesen Sie zum Vergleich zwischen OBJECT und IFRAME in Bezug auf die Dokumenteinbindung die »Anmerkungen zu eingebetteten Dokumenten« weiter unten.

Bilder und andere eingebundene Objekte können mit ihnen verbundene Hyperlinks haben, beide durch den Standard-Link-Mechanismus, aber auch über Imagemaps. Eine Imagemap gibt aktive geometrische Bereiche eines eingebetteten Objekts an und verbindet jeden Bereiche mit einem Link. Bei ihrer Aktivierung können diese Links den Empfang eines Dokuments veranlassen, ein Programm auf dem Server starten usw.

In den folgenden Abschnitten behandeln wir die verschiedenen Mechanismen, die Autoren für die Multimedia-Einbindung und zum Erstellen von Imagemaps dafür zur Verfügung haben.

13.2 Eine Graphik einbinden: das Element IMG

<!-- To avoid problems with text-only UAs as well as 
   to make image content understandable and navigable 
   to users of non-visual UAs, you need to provide
   a description with ALT, and avoid server-side image maps -->
<!ELEMENT IMG - O EMPTY                -- Embedded image -->

<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI of image to embed --
  alt         %Text;         #REQUIRED -- short description --
  longdesc    %URI;          #IMPLIED  -- link to long description
                                          (complements alt) --
  name        CDATA          #IMPLIED  -- name of image for scripting --
  height      %Length;       #IMPLIED  -- override height --
  width       %Length;       #IMPLIED  -- override width --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  ismap       (ismap)        #IMPLIED  -- use server-side image map --
  >

Start-Tag: erforderlich, End-Tag: verboten

Attributdefinitionen

src = uri [CT]
Dieses Attribut gibt den Ort der Bildquelle an. Beispiele weithin erkannter Bildformate sind GIF, JPEG und PNG.
longdesc = uri [CT]
Dieses Attribut gibt einen Link zu einer langen Beschreibung des Bilds an. Diese Beschreibung sollte die kurze Beschreibung des Attributs alt ergänzen. Besitzt das Bild eine verknüpfte Imagemap, dann sollte dieses Attribut Informationen über den Inhalt der Imagemap anbieten. Dies ist besonders wichtig für Server-seitige Imagemaps. Weil ein IMG-Element im Inhalt eines A-Elements stehen kann, muss sich der Mechanismus des des Benutzerprogramms in der Benutzerschnittstelle für den Zugriff auf die longdesc-Quelle des ersteren von dem Mechanismus für den Zugriff auf die href-Quelle des letzteren unterscheiden.
name = cdata [CI]
Dieses Attribut benennt das Element, so dass es von Stylesheets oder Skripten referenziert werden kann. Anmerkung: Dieses Attribut wurde zur Rückwärtskompatibilität aufgenommen. Anwendungen sollten das id-Attribut verwenden, um das Element zu identifizieren.

An anderer Stelle definierte Attribute

Das IMG-Element bettet ein Bild an der Stelle in das aktuelle Dokument ein, an der die Elementdefinition zu finden ist. Das IMG-Element hat keinen Inhalt; es wird im Allgemeinen im Textfluss (inline) durch das Bild ersetzt, das vom src-Attribut angegeben wird. Eine Ausnahme besteht für links oder rechts ausgerichtete Bilder, die aus dem Textfluss herausfließen.

In einem früheren Beispiel haben wir einen Verweis zu einem Familienfoto definiert. Hier fügen wir das Foto direkt in das aktuelle Dokument ein:

<BODY>
<P>Ich komme gerade aus dem Urlaub nach Hause! Hier ist ein Foto meiner Familie am See:
<IMG src="http://www.somecompany.com/People/Ian/vacation/family.png"
     alt="Ein Foto meiner Familie am See.">
</BODY>

Diese Einbindung könnte auch mit dem OBJECT-Element wie folgt geschehen:

<BODY>
<P>Ich komme gerade aus dem Urlaub nach Hause! Hier ist ein Foto meiner Familie am See:
<OBJECT data="http://www.somecompany.com/People/Ian/vacation/family.png"
        type="image/png">
Ein Foto meiner Familie am See.
</OBJECT>
</BODY>

Das Attribut alt gibt alternativen Text an, der dargestellt wird, wenn das Bild nicht angezeigt werden kann (mehr Informationen finden sie in Abschnitt »Wie alternativer Text angegeben wird« weiter unten). Benutzerprogramme müssen alternativen Text darstellen, wenn sie keine Bilder unterstützen, bestimmte Bildtypen nicht unterstützen oder wenn sie so konfiguriert sind, dass sie Bilder nicht anzeigen.

Das folgende Beispiel zeigt, wie das longdesc-Attribut verwendet werden kann, um auf eine ausführlichere Beschreibung zu verweisen:

<BODY>
<P>
<IMG src="sitemap.gif"
     alt="HP Labs Site Map"
     longdesc="sitemap.html">
</BODY>

Anmerkung der Übersetzer:

Eine Möglichkeit, auf solch eine Beschreibung zu verweisen, zeigt das folgende Bild (hier das Eigenschaftsfenster eines Bildes in Mozilla).

Das alt-Attribut liefert eine kurze Beschreibung des Bildes. Diese sollte ausreichend sein, um Benutzern die Entscheidung zu ermöglichen, ob sie dem von longdesc-Attribut angegebenen Link auf die längere Beschreibung folgen möchten, in diesem Fall sitemap.html.

Bitte lesen Sie in Abschnitt »Visuelle Darstellung von Objekten, Bildern und Applets« die Informationen über Bildgröße, Ausrichtung und Rahmen.

13.3 Allgemeine Objekte einbetten: das Element OBJECT

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- generic embedded object -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- declare but don't instantiate flag --
  classid     %URI;          #IMPLIED  -- identifies an implementation --
  codebase    %URI;          #IMPLIED  -- base URI for classid, data, archive--
  data        %URI;          #IMPLIED  -- reference to object's data --
  type        %ContentType;  #IMPLIED  -- content type for data --
  codetype    %ContentType;  #IMPLIED  -- content type for code --
  archive     CDATA          #IMPLIED  -- space-separated list of URIs --
  standby     %Text;         #IMPLIED  -- message to show while loading --
  height      %Length;       #IMPLIED  -- override height --
  width       %Length;       #IMPLIED  -- override width --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  name        CDATA          #IMPLIED  -- submit as part of form --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  >

Start-Tag: erforderlich, End-Tag: erforderlich

Attributdefinitionen

classid = uri [CT]
Dieses Attribut kann verwendet werden, um den Ort einer Objektimplementierung über einen URI anzugeben. Es kann abhängig vom Typ des beteiligten Objekts zusammen mit oder als Alternative zum data-Attribut verwendet werden.
codebase = uri [CT]
Dieses Attribut gibt den Basispfad zur Auflösung relativer URIs an, die durch die Attribute classid, data und archive angegeben sind. Ist das Attribut nicht angegeben, ist der Basis-URI des aktuellen Dokuments der voreingestellte Wert.
codetype = content-type [CI]
Dieses Attribut gibt den Inhaltstyp der erwarteten Daten an, wenn ein Objekt heruntergeladen wird, das durch das Attribut classid angegeben ist. Dieses Attribut ist optional, jedoch empfohlen, wenn classid angegeben ist, weil es dem Benutzerprogramm gestattet, das Laden von Informationen für nicht unterstützte Inhaltstypen zu vermeiden. Ist es nicht angegeben, ist seine Voreinstellung der Wert des type-Attributs.
data = uri [CT]
Dieses Attribut kann dazu verwendet werden, den Ort der Objektdaten anzugeben, zum Beispiel Bilddaten für Objekte, die Bilder definieren oder allgemeiner, eine serialisierte Form eines Objekts, die verwendet werden kann, um es wiederherzustellen. Ist es als relativer URI gegeben, sollte es relativ zum codebase-Attribut aufgelöst werden.
type = content-type [CI]
Dieses Attribut gibt den Inhaltstyp der Daten an, die vom data-Attribut angegeben werden. Dieses Attribut ist optional, jedoch empfohlen, wenn data angegeben ist, weil es dem Benutzerprogramm gestattet, das Laden von Informationen für nicht unterstützte Inhaltstypen zu vermeiden. Unterscheidet sich der Wert dieses Attributs vom HTTP-Inhaltstyp, der vom Server zurückgegeben wird, wenn das Objekt empfangen wird, ist der HTTP-Inhaltstyp vorrangig.
archive = uri-list [CT]
Dieses Attribut kann dazu verwendet werden, eine durch Kommata getrennte Liste mit URIs der Archive anzugeben, welche die relevanten Quellen für das Objekt enthalten. Darin eingeschlossen können die Quellen sein, die durch die Attribute classid und data bezeichnet sind. Archive vorab herunterzuladen, führt im Allgemeinen zu einer verringerten Ladezeit für Objekte. Archive, die als relativer URI angegeben sind, sollten relativ zum Attribut codebase aufgelöst werden.
declare [CI]
Sofern angegeben, wird die aktuelle OBJECT-Definition durch dieses Boolesche Attribut zu einer Deklaration. Die Instanz des Objekts muss von einer folgenden OBJECT-Definition, die sich auf diese Deklaration bezieht, erzeugt werden.
standby = text [CS]
Dieses Attribut stellt eine Nachricht zur Verfügung, die ein Benutzerprogramm darstellen kann, während die Implementierung und die Daten des Objekts geladen werden.

An anderer Stelle defnierte Attribute

Die meisten Benutzerprogramme haben einen eingebauten Mechanismus zur Darstellung von allgemeinen Datentypen, dazu gehören Text, GIF-Bilder, Farben, Schriftarten und eine Handvoll graphischer Elemente. Um Datentypen darzustellen, die sie nicht nativ unterstützen, verwenden Benutzerprogramme im Allgemeinen externe Anwendungen. Das Element OBJECT gestattet dem Autor die Kontrolle darüber, ob Daten extern dargestellt werden sollen oder durch ein vom Autor angegebenes Programm, das Daten innerhalb eines Benutzerprogramms anzeigt.

Im allgemeinsten Fall hat ein Autor drei Infromationstypen anzugeben:

Das Element OBJECT gestattet zwar Autoren die Angabe aller drei Datentypen, jedoch müssen Autoren nicht unbedingt alle drei Angaben zugleich machen. Zum Beispiel benötigen einige Objekte vielleicht keine Daten (z.B. ein in sich geschlossenes Applet, das eine kurze Animation zeigt). Andere benötigen eventuell keine Laufzeitinitialisierung. Wieder andere benötigen möglicherweise keine zusätzlichen Implementierungsinformationen, z.B. kann das das Benutzerprogramm selbst schon wissen, wie dieser Datentyp darzustellen ist (z.B. GIF-Bilder).

Autoren geben eine Objektimplementierung und den Ort der darzustellenden Daten über das OBJECT-Element an. Um Laufzeitwerte anzugeben, verwenden Autoren jedoch das Element PARAM, das im Abschnitt »Objektinitialisierung« erörtert wird.

Das OBJECT-Element kann auch im Inhalt des Elements HEAD stehen. Weil Benutzerprogramme im Allgemeinen Elemente im HEAD nicht darstellen, sollten Autoren sicherstellen, dass kein OBJECT-Element im HEAD Inhalt angibt, der dargestellt werden kann. Bitte lesen Sie unter »Daten teilen mit anderen Frames« im Abschnitt 16.2.1 nach, dort findet sich ein Beispiel für die Einbindung des OBJECT-Elements in das HEAD-Element.

Bitte lesen Sie den Abschnitt 17.2, »Steuerelemente«, dort finden Sie Informationen über OBJECT-Elemente in Formularen.

Dieses Dokument spezifiziert nicht das das Verhalten von OBJECT-Elementen, die sowohl das Attribut classid zur Identifizierung einer Implementierung als auch das Attribut data zur Angabe von Daten für diese Implementierung verwenden. Um für Portabilität zu sorgen, sollten Autoren das Element PARAM verwenden, um Implementierungen mitzuteilen, woher sie zusätzliche Daten beziehen können.

13.3.1 Regeln zur Darstellung von Objekten

Benutzerprogramme müssen ein OBJECT-Element entsprechend der folgenden Rangfolge interpretieren:

  1. Das Benutzerprogramm muss zuerst versuchen, das Objekt darzustellen. Es sollte nicht den Inhalt des Elements darstellen, aber es muss ihn untersuchen, falls das Element irgendwelche direkte Kinder hat, die PARAM-Elemente (siehe Objektinitialisierung) oder MAP-Elemente sind (siehe Client-seitige Imagemaps).
  2. Ist ein Benutzerprogramm aus irgendeinem Grund nicht in der Lage, das Objekt darzustellen (so konfiguriert, zu wenig Quellen, falsche Architektur usw.), dann muss es versuchen, dessen Inhalt darzustellen.

Autoren sollten keinen Inhalt in OBJECT-Elemente einschließen, die im HEAD-Element stehen.

Im folgenden Beispiel fügen wir das Applet einer analogen Uhr in ein Dokument über das OBJECT-Element ein. Das in der Sprache Python geschriebene Applet benötigt keine weiteren Daten oder Laufzeitwerte. Das Attribut classid gibt den Ort des Applets an:

    
<P><OBJECT classid="http://www.miamachina.it/analoguhr.py">
</OBJECT>

Beachten Sie, dass die Uhr dargestellt wird, sobald das Benutzerprogramm diese OBJECT-Deklaration interpretiert. Es ist möglich, die Darstellung eines Objekts zu verzögern, indem man das Objekt zuerst deklariert (weiter unten beschrieben).

Autoren sollten diese Deklaration durch Angabe eines alternativen Textes im Inhalt des OBJECT-Elements vervollständigen, falls das Benutzerprogramm die Uhr nicht anzeigen kann.

    
<P><OBJECT classid="http://www.miamachina.it/analoguhr.py">
Eine animierte Uhr.
</OBJECT>

Eine signifikante Konsequenz des Aufbaus des OBJECT-Elements ist, dass er einen Mechanismus bietet, alternative Objektdarstellungen anzugeben; jede eingebettete OBJECT-Deklaration kann alternative Inhaltstypen deklarieren. Kann ein Benutzerprogramm das äußere OBJECT nicht darstellen, versucht es, den Inhalt darzustellen, der wiederum ein OBJECT-Element sein kann, usw.

Im folgenden Beispiel betten wir meherere OBJECT-Deklarationen ein, um zu zeigen, wie die alternative Darstellung funktioniert. Ein Benutzerprogramm wird versuchen, das erste OBJECT-Element darzustellen, das es kann, und zwar in der folgenden Reihenfolge: (1) Ein in der Sprache Python geschriebenes Erde-Applet, (2) eine MPEG-Animation der Erde, (3) ein GIF-Bild der Erde, (4) alternativen Text.

<P>                 <!-- Zuerst versuche das Python-Applet -->
<OBJECT title="Die Erde vom All aus betrachtet" 
        classid="http://www.observer.mars/DieErde.py">
                    <!-- Sonst, versuche das MPEG-Video -->
  <OBJECT data="TheEarth.mpeg" type="application/mpeg">
                    <!-- Sonst, versuche das GIF-Bild -->
    <OBJECT data="TheEarth.gif" type="image/gif">
                    <!-- Sonst stelle den Text dar -->
     Die <STRONG>Erde</STRONG> aus dem All betrachtet.
    </OBJECT>
  </OBJECT>
</OBJECT>

Die äußere Deklaration gibt ein Applet an, das keine Daten oder Anfangswerte erfordert. Die zweite Deklaration gibt eine MPEG-Animation an, und weil sie keinen Ort für eine Implementierung definiert, die MPEG verarbeitet, liegt die Vorgehensweise in Bezug auf die Animation beim Benutzerprogramm. Wir geben auch das type-Attribut an, so dass ein Benutzerprogramm sich nicht bemühen wird, die Datei »TheEarth.mpeg« aus dem Netz zu laden, wenn ihm bekannt ist, dass es MPEG nicht darstellen kann. Die dritte Deklaration gibt den Ort einer GIF-Datei an und liefert einen alternativen Text, falls alle anderen Mechanismen versagen.

Interne gegen externe Daten. Darzustellende Daten können auf zwei Arten zur Verfügung gestellt werden: intern und aus externen Quellen. Während die erstgenannte Methode im Allgemeinen zu einer schnelleren Darstellung führt, ist sie nicht praktisch, wenn größere Datenmengen dargestellt werden.

Hier folgt ein Beispiel, das zeigt, wie ein OBJECT intern mit Daten gefüttert werden kann:

<P>
<OBJECT id="uhr1"
        classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="data:application/x-oleobject;base64, ...base64-Daten...">
    Eine Uhr.
</OBJECT>

Bitte lesen sie den Abschnitt »Visuelle Darstellung von Objekten, Bildern und Applets«. Hier finden Sie Informationen zu Objektgröße, -ausrichtung und Rahmen.

13.3.2 Objektinitialisierung: das Element PARAM

<!ELEMENT PARAM - O EMPTY              -- named property value -->

<!ATTLIST PARAM
  id          ID             #IMPLIED  -- document-wide unique id --
  name        CDATA          #REQUIRED -- property name --
  value       CDATA          #IMPLIED  -- property value --
  valuetype   (DATA|REF|OBJECT) DATA   -- How to interpret value --
  type        %ContentType;  #IMPLIED  -- content type for value
                                          when valuetype=ref --
  >

Start-Tag: erforderlich, End-Tag: verboten

Attributdefinitionen

name = cdata
Dieses Attribut definiert den Namen eines Laufzeitparameters, von dem angenommen wird, dass das eingebettete Objekt ihn kennt. Ob der Eigenschaftsname Unterschiede zwischen Groß- und Kleinschreibung macht, ist abhängig von der jeweiligen Objekt-Implementierung.
value = cdata
Dieses Attribut gibt den Wert eines Laufzeitparameters an, der von name spezifiziert wird. Eigenschaftswerte haben keine Bedeutung für HTML; ihre Bedeutung wird durch das betreffende Objekt festgelegt.
valuetype = data|ref|object [CI]
Dieses Attribut gibt den Typ des value-Attributs an. Folgende Werte sind möglich:
  • data: Dies ist die Voreinstellung für das Attribut. Das heißt, der durch value angegebene Wert wird als Zeichenkette betrachtet und an die Implementierung des Objekts weitergegeben.
  • ref: Der von value angegebene Wert ist ein URI, der eine Quelle angibt, in der Laufzeitwerte gespeichert sind. Dies erlaubt Hilfsprogrammen die Identifizierung von URIs, die als Parameter angegeben werden. Der URI muss zu dem Objekt weitergeleitet werden, wie er ist (as is), z.B. nicht aufgelöst.
  • object: Der von value angegebene Wert ist ein Bezeichner, der sich auf eine OBJECT-Deklaration im gleichen Dokument bezieht. Der Bezeichner muss der Wert des id-Attributs sein, das für der deklarierte OBJECT-Element gesetzt ist.
type = content-type [CI]
Dieses Attribut gibt den Inhaltstyp der Quelle, die durch das value-Attribut bestimmt ist, nur in dem Fall an, wenn für valuetype der Wert ref angegeben ist. Dieses Attribut gibt so den Typ der Werte für das Benutzerprogramm an, die unter dem URI gefunden werden, der von value angegeben ist.

An anderer Stelle definierte Attribute

PARAM-Elemente geben eine Wertemenge an, die von einem Objekt zur Laufzeit benötigt werden kann. Eine beliebige Anzahl von PARAM-Elementen kann im Inhalt der Elemente OBJECT oder APPLET in jeder erdenklichen Reihenfolge erscheinen, jedoch müssen sie zu Beginn des Inhalts der einschließenden Elemente OBJECT oder APPLET stehen.

Es wird angenommen, dass die Syntax der Namen und Werte von der Implementierung des Objekts verstanden wird. Dieses Dokument gibt weder an, wie Benutzerprogramme die Name/Wert-Paare empfangen sollen, noch wie sie doppelt erscheinende Parameternamen interpretieren sollen.

Kehren wir zum Uhr-Beispiel zurück, um die Verwendung des PARAM-Elements zu verdeutlichen: Nehmen Sie an, dass ein Applet in der Lage ist, zwei Laufzeitparameter zu verarbeiten, die dessen Anfangshöhe und -breite definieren. Wir können die Anfangsabmessung mit zwei PARAM-Elementen auf 40x40 Pixel festlegen.

    
<P><OBJECT classid="http://www.miamachina.it/analoguhr.py">
<PARAM name="height" value="40" valuetype="data">
<PARAM name="width" value="40" valuetype="data">
Dieses Benutzerprogramm kann keine Python-Anwendungen darstellen.
</OBJECT>

Im folgenden Beispiel werden Laufzeitdaten für den Objektparameter Init_values als externe Quelle (eine GIF-Datei) angegeben. Der Wert des Attributs valuetype wird folglich auf »ref« gesetzt, und value ist ein URI, der die Quelle angibt.

<P><OBJECT classid="http://www.gifstuff.com/gifappli"
       standby="Elvis wird geladen ...">
<PARAM name="Init_values"
       value="./images/elvis.gif">
       valuetype="ref">
</OBJECT>

Beachten Sie, dass wir das standby-Attribut so angegeben haben, dass ein Benutzerprogramm eine Nachricht einblenden kann, solange der Darstellungsmechanismus geladen wird.

Wird ein OBJECT-Element dargestellt, müssen Benutzerprogramme den Inhalt nur nach PARAM-Elementen durchsuchen, die direkte Kinder sind und das OBJECT damit »füttern«.

Daraus abgeleitet gilt für das folgende Beispiel, dass »param1« für »obj1« (und nicht für »obj2«) gilt, wenn »obj1« dargestellt wird. Wird »obj1« nicht dargestellt, jedoch »obj2«, dann wird »param1« ignoriert und »param2« gilt für »obj2«. Wird keines der beiden OBJECT-Elemente dargestellt, gilt auch keines der beiden PARAM-Elemente.

<P>
<OBJECT id="obj1">
   <PARAM name="param1">
   <OBJECT id="obj2">
      <PARAM name="param2">
   </OBJECT>
</OBJECT>

13.3.3 Globale Namensschemata für Objekte

Der Ort der Implementierung eines Objekts ist durch einen URI gegeben. Wie wir in Abschnitt 2.1.1, »Einführung zu URIs« erörtert haben, gibt das erste Segment eines absoluten URIs das Namensschema an, das verwendet wird, um die Daten zu übertragen, die vom URI bestimmt sind. Für HTML-Dokumente ist das Schema häufig »http«. Einige Applets können andere Namensschemata einsetzen. Wenn zum Beispiel ein Java-Applet angegeben wird, können Autoren URIs verwenden, die mit »java« beginnen oder für ActiveX-Applets können Autoren das »clsid« verwenden.

Im folgenden Beispiel fügen wir ein Java-Applet in ein HTML-Dokument ein.

<P><OBJECT classid="java:program.start">
</OBJECT>

Durch Angabe des codetype-Attributs kann ein Benutzerprogramm, abhängig von seiner Fähigkeit Java zu verarbeiten, entscheiden, ob es die Java-Anwendung empfangen will.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
</OBJECT>

Einige Darstellungsschemata erfordern zusätzliche Informationen, um ihre Implementierung zu identifizieren. Ihnen muss mitgeteilt werden, wo sie diese Informationen finden. Autoren können Pfadinformationen zu der Implementierung des Objekts über das Attribut codebase angeben.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
        codebase="http://foooo.bar.com/java/myimplementation/"
</OBJECT>

Das folgende Beispiel gibt über einen URI, der mit dem Namensschema »clsid« beginnt, ein ActiveX-Objekt an (mit dem classid-Attribut). Das Attribut data lokalisiert die Daten, die dargestellt werden sollen (eine andere Uhr).

<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="http://www.acme.com/ole/clock.stm">
Diese Anwendung wird nicht unterstützt.
</OBJECT>

13.3.4 Objektdeklarationen und -instanzen

Die vorausgehenden Beispiele haben nur isolierte Objektdefinitionen gezeigt. Wenn ein Dokument mehr als eine Instanz des gleichen Objekts enthalten soll, ^dann kann man die Deklaration eines Objekts von seinen Instanzen trennen. Dies zu tun, bringt mehrere Vorteile:

Um ein Objekt zu deklarieren, ohne dass es ausgeführt wird, wenn das Benutzerprogramm es ausliest, setzt man das Boolesche Attribut declare im OBJECT-Element. Zur gleichen Zeit müssen Autoren diese Deklaration dadurch kennzeichnen, dass sie den Wert des id-Attributs im OBJECT-Element auf einen eindeutigen Wert setzen. Spätere werden sich Instanzen des Objekts auf diesen Bezeichner beziehen.

Ein deklariertes OBJECT muss im Dokument vor der ersten Instanz dieses Objektes (OBJECT) stehen.

Für ein mit dem declare-Attribut definiertes Objekt wird jedesmal eine Instanz erzeugt, wenn ein Element, das sich auf das Objekt bezieht, fordert, dass es dargestellt wird (z.B. ein Verweis bezieht sich auf dieses Objekt und wird aktiviert oder ein Objekt bezieht sich auf dieses Objekt und wird aktiviert usw.).

Im folgenden Beispiel deklarieren wir ein OBJECT und erzeugen eine Instanz des Objekts, indem wir uns über einen Verweis darauf beziehen. So kann das Objekt zum Beispiel durch Anklicken eines abgesetzten Texts aktiviert werden.

<P><OBJECT declare
        id="erd.deklaration" 
        data="DieErde.mpeg" 
        type="application/mpeg">
   Die <STRONG>Erde</STRONG> aus dem All betrachtet.
</OBJECT>
...später im Dokument...
<P>Eine tolle <A href="#erd.deklaration"> Animation der Erde!</A>

Anmerkung der Übersetzer:

Die Errata ergänzen hierzu: Eine weitere Möglichkeit, von einem in dieser Weise deklarierten Objekt eine Instanz zu erzeugen, ist Folgendes:

<object data="#erd.deklaration"></object>

Das folgende Beispiel zeigt, wie Laufzeitwerte angegeben werden, die wiederum andere Objekte sind. In diesem Beispiel schicken wir einen Text (in der Tat ein Gedicht) an einen hypothetischen Mechanismus zur Ansicht von Gedichten. Das Objekt erkennt einen Laufzeitparameter namens »font« (sagen wir, um das Gedicht in einer bestimmten Schriftart darzustellen). Der Wert für diesen Parameter ist seinerseits ein Objekt, welches das Schriftart-Objekt einfügt (aber nicht darstellt). Die Beziehung zwischen dem Schriftart-Objekt und dem Gedichtbetrachter-Objekt wird (1) durch Angabe der id»tribune« in der Deklaration des Schriftart-Objekts und (2) durch den Bezug darauf über das PARAM-Element des Gedichtbetrachter-Objekts (mit valuetype und value) hergestellt.

<P><OBJECT declare
     id="tribune"
     type="application/x-webfont"
     data="tribune.gif">
</OBJECT>
...betrachte das Gedicht in KublaKhan.txt hier...
<P><OBJECT classid="http://foo.bar.com/poem_viewer" 
           data="KublaKhan.txt">
<PARAM name="font" valuetype="object" value="#tribune">
<P>Ihnen fehlt ein wirklich cooler Gedichtbetrachter ...
</OBJECT>

Benutzerprogramme, die das Attribut declare nicht verstehen, müssen den Inhalt der OBJECT-Deklaration darstellen.

13.4 Einbinden eines Applets: das Element APPLET

APPLET wird zu Gunsten des Elements OBJECT missbilligt (mit all seinen Attributen).

In der Transitional DTD finden Sie die formale Definition.

Attributdefinitionen

codebase = uri [CT]
Dieses Attribut gibt den Base-URI eines Applets an. Ist dieses Attribut nicht spezifiziert, ist die Voreinstellung gleich dem Base-URI des aktuellen Dokuments. Werte für dieses Attribut können sich nur auf Unterverzeichnisse des Verzeichnisses beziehen, das dieses aktuelle Dokument enthält. Anmerkung: Obwohl die Beschränkung auf Unterverzeichnisse eine Abweichung von der allgemeinen Praxis und der HTML 3.2-Spezifikation darstellt, hat die HTML Working Group entschieden, die Beschränkung in dieser Version der Spezifikation aus Sicherheitsgründen zu belassen.
code = cdata [CS]
Dieses Attribut gibt entweder den Namen der Klassendatei an, die alle Applet-Unterklassen des Applets enthält, oder den Pfad, um diese Klasse zu empfangen, eingeschlossen die Klassendatei selbst. Es wird in unter Berücksichtigung von »codebase« des Applets aufgelöst. Entweder muss code oder object vorhanden sein.
name = cdata [CS]
Dieses Attribut gibt einen Namen für die Instanz des Applets an. Damit wird möglich, dass sich Applets im gleichen Dokument gegenseitig finden (und miteinander kommunizieren).
archive = uri-list [CT]
Dieses Attribut gibt eine durch Kommata getrennte Liste mit URIs für Archive, die Klassen und andere Ressourcen enthalten, die »vorgeladen« werden. Die Klassen werden mit Hilfe einer Instanz eines Applet-Klassenladers (AppletClassLoader) mit der gegebenen codebase geladen. Relative URIs für Archive werden in Bezug auf das codebase-Attribut des Applets aufgelöst. Quellen vorab zu laden, kann die Performance eines Applets signifikant erhöhen.
object = cdata [CS]
Dieses Attribut gibt eine Ressource an, die in serialisierter Form den Zustand eines Applets enthält. Es wird relativ zur Codebase des Applets interpretiert. Die serialisierten Daten enthalten den Namen der Klasse des Applets, aber nicht deren Implementierung. Der Klassenname dient dazu, die Implementierung aus einer Class-Datei oder einem Archiv zu bekommen.

Wenn das Applet »deserialisiert« wird, wird die start()-Methode, aber nicht die init()-Methode aufgerufen. Attributwerte, die zum Zeitpunkt gültig waren, als das Objekt serialisiert wurde, werden nicht wieder hergestellt. Jegliche Attribute, die an diese APPLET-Instanz übergeben werden, werden für das Applet zur Verfügung stehen. Autoren sollten dieses Feature mit großer Vorsicht einsetzen. Ein Applet sollte vor der Serialisierung angehalten werden.

Entweder code oder object müssen vorhanden sein. Falls sowohl code als auch object angegeben sind, ist es ein Fehler, wenn sie verschiedene Klassennamen nennen.

width = length [CI]
Dieses Attribut gibt die Anfangsbreite des Anzeigebereichs eines Applets an (nicht davon betroffen sind die Fenster und Dialogfelder, die das Applet erzeugt).
height = length [CI]
Dieses Attribut gibt die Anfangshöhe des Anzeigebereichs eines Applets an (nicht davon betroffen sind die Fenster und Dialogfelder, die das Applet erzeugt).

An anderer Stelle definierte Attribute

Dieses von allen Java-fähigen Browsern unterstützte Element, gestattet es Autoren, ein Java-Applet in ein HTML-Dokument einzubetten. Es wird zu Gunsten des Elements OBJECTmissbilligt.

Der Inhalt des APPLET-Elements dient als alternative Information für Benutzerprogramme, die dieses Element nicht unterstützen oder so konfiguriert sind, dass sie Applets nicht zu unterstützen. Andernfalls müssen Benutzerprogramme den Inhalt ignorieren.

MISSBILLIGTES BEISPIEL:
Im folgenden Beispiel fügt das APPLET-Element ein Java-Applet in das Dokument ein. Weil kein codebase-Attribut angegeben ist, wird angenommen, dass sich dieses Applet im gleichen Verzeichnis wie das aktuelle Dokument befindet.

<APPLET code="Bubbles.class" width="500" height="500">
Ein Java-Applet, das animierte Seifenblasen malt.
</APPLET>

Dieses Beispiel kann wie folgt mit einem OBJECT-Element erzeugt werden:

<P><OBJECT codetype="application/java"
        classid="java:Bubbles.class"
        width="500" height="500">
Ein Java-Applet, das animierte Seifenblasen malt.
</OBJECT>

Anfangswerte können an dem Applet über das PARAM-Element bereitgestellt werden.

MISSBILLIGTES BEISPIEL:
Das folgende Beispiel eines Java-Applets:

<APPLET code="AudioItem" width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Ein Java-Applet, das eine Willkommensmusik spielt.
</APPLET>

kann mit Hilfe eines OBJECT-Elements wie folgt erzeugt werden:

<OBJECT codetype="application/java"
        classid="AudioItem" 
        width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Ein Java-Applet, das eine Willkommensmusik spielt.
</OBJECT>

13.5 Anmerkungen zu eingebetteten Dokumenten

Anstatt nur auf ein Dokument zu verweisen, möchte ein Autor dieses vielleicht manchmal direkt in das primäre Dokument einbetten. Autoren können entweder das Element IFRAME oder das Element OBJECT für diesen Zweck verwenden, jedoch unterscheiden sich die Elemente in einigen Bereichen. Die beiden Elemente haben nicht nur unterschiedliche Inhaltsmodelle, das IFRAME-Element kann auch ein Ziel-Frame sein (im Abschnitt 16.3, »Informationen für Ziel-Frames angeben« finden Sie Details) und kann vom Benutzerprogramm als Fokus für den Druck, das Anschauen von HTML-Quellen usw. ausgewählt werden. Benutzerprogramme können ausgewählte Frame-Elemente auf eine Weise darstellen, die sie von den nicht ausgewählten Frames unterscheidet (z.B. durch einen Rahmens um den ausgewählten Frame herum).

Ein eingebettetes Dokument ist vollkommen unabhängig vom Dokument, in das es eingebettet ist. Zum Beispiel werden relative URIs im eingebetteten Dokument zu dem Base-URI des eingebetteten Dokuments aufgelöst, nicht zu dem des Hauptdokuments. Ein eingebettetes Dokument wird nur innerhalb eines anderen Dokuments dargestellt (z.B. in einem Unterfenster); ansonsten bleibt es unabhängig.

Zum Beispiel bettet die folgende Zeile den Inhalt von embed_me.html an der Stelle ein, an der die OBJECT-Definition erscheint.

...Text vorher...
<OBJECT data="embed_me.html">
Warnung: embed_me.html konnte nicht eingebettet werden.
</OBJECT>
...Text danach...

Rufen Sie sich in Erinnerung, dass der Inhalt von OBJECT nur dann dargestellt werden muss, wenn die vom data-Attribut angegebene Datei nicht geladen werden kann.

In dem Fall, in dem eine Datei sich selbst enthält, ist das Verhalten eines Benutzerprogramms nicht defniert.

13.6 Imagemaps

Imagemaps gestatten es Autoren, Bereiche eines Bildes oder Objekts anzugeben und weisen jedem Bereich eine eigene Funktion zu (z.B. ein Dokument empfangen, ein Programm starten usw.). Wird der Bereich durch den Benutzer aktiviert, wird die Funktion ausgeführt.

Eine Imagemap wird erzeugt, indem einem Objekt sensitive geometrische Bereiche zugewiesen werden.

Es gibt zwei Arten von Imagemaps:

Client-seitige Imagemaps werden den Server-seitigen Imagemaps aus mindestens zwei Gründen vorgezogen: Sie sind zugänglicher für Menschen, die mit nicht visuellen Benutzerprogrammen surfen, und sie geben eine direkte Rückmeldung, ob sich ein Zeiger über einem aktiven Bereich befindet.

13.6.1 Client-seitige Imagemaps: die Elemente MAP und AREA

<!ELEMENT MAP - - ((%block;) | AREA)+ -- client-side image map -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- for reference by usemap --
  >

Start-Tag: erforderlich, End-Tag: verboten

<!ELEMENT AREA - O EMPTY               -- client-side image map area -->

<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controls interpretation of coords --
  coords      %Coords;       #IMPLIED  -- comma-separated list of lengths --
  href        %URI;          #IMPLIED  -- URI for linked resource --
  nohref      (nohref)       #IMPLIED  -- this region has no action --
  alt         %Text;         #REQUIRED -- short description --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  >

Start-Tag: erforderlich, End-Tag: verboten

Attributdefinitionen für MAP

name = cdata [CI]
Dieses Attribut weist der Imagemap, die durch das Element MAP definiert ist, einen Namen zu.

Attributdefinitionen für AREA

shape = default|rect|circle|poly [CI]
Dieses Attribut gibt die Form des Bereichs an. Mögliche Werte:
  • default: Gibt den gesamten Bereich an.
  • rect: Definiert einen rechteckigen Bereich.
  • circle: Definiert eine kreisförmigen Bereich.
  • poly: Definiert einen vieleckigen Bereich.
coords = coordinates [CN]
Dieses Attribut gibt die Position und die Form auf dem Bildschirm an. Anzahl und Reihenfolge der Werte sind abhängig von der definierten Form. Mögliche Kombinationen sind:
  • rect: left-x, top-y, right-x, bottom-y.
  • circle: center-x, center-y, radius. Anmerkung: Ist der Radiuswert eine Prozentangabe, sollten Benutzerprogramme den endgültigen Radiuswert anhand der Breite und Höhe des entsprechenden Objekts berechnen. Der Radius sollte der kleinere der beiden Werte sein.
  • poly: x1, y1, x2, y2, ..., xN, yN. Das erste und das letzte x-y-Koordinatenpaar sollten gleich sein und das Vieleck schließen. Sind diese Koordinatenwerte nicht gleich, sollten Benutzerprogramme ein zusätzliches Koordinatenpaar erzeugen, um das Vieleck zu schließen.

Koordinaten sind relativ zu der oberen linken Ecke des Objekts. Alle Werte sind Maße (length, siehe Abschnitt 6.6). Alle Werte werden durch Kommata getrennt.

nohref [CI]
Wenn gesetzt, gibt dieses Boolesche Attribut an, dass diesem Bereich kein Verweis zugeordnet ist.

Attribute, um eine Imagemap mit einem Element zu verbinden

usemap = uri [CT]
Dieses Attribut verbindet eine Imagemap mit einem Element. Die Imagemap wird durch ein MAP-Element definiert. Der Wert von usemap muss dem Wert des name-Attributs des zu verbindenden MAP-Elements entsprechen.

An anderer Stelle definierte Attribute

Anmerkung der Übersetzer:

Die Errata merken zu AREA an: »In der Spezifikation ist unklar, ob x,y-Koordinaten die Basis 0 oder 1 verwenden. Ist die linke obere Ecke (0,0) oder (1,1)?« Eine Korrektur steht bisher (Stand 01/2003) nicht zur Verfügung.

Die Fassung von XHTML, an der zur Zeit gearbeitet wird (XHTML 2.0, Working Draft, 18. Dezember 2002), definiert die Koordinaten eindeutig. Dort heißt es in der »Sammlung der Imagemap-Attribute«: »Bildschirmkoordinaten werden als Pixelwerte ausgedrückt, die relativ zum Bild sind; ihr Ursprung ist (0,0) in der linken oberen Ecke.«

Das Element MAP gibt eine Client-seitige Imagemap an (oder einen anderen Navigationsmechanismus), die mit anderen Elementen (IMG, OBJECT oder INPUT) verbunden werden kann. Eine Imagemap wird mit einem Element über das usemap-Attribut des Elements verknüpft. Das Element MAP kann als allgemeiner Navigationsmechanismus ohne ein verknüpftes Bild verwendet werden.

Die Gegenwart eines usemap-Attributs in einem OBJECT bedingt, dass dieses eingebettete Objekt ein Bild ist. Wenn das Element OBJECT darüber hinaus eine verknüpfte Client-seitige Imagemap hat, können Benutzerprogramme eine Interaktion des Benutzers mit dem OBJECT-Element nur in Bezug auf die Client-seitige Imagemap implementieren. Dies gestattet Benutzerprogrammen (wie einem Audio-Browser oder einem Robot) mit dem OBJECT-Element zu interagieren, ohne es ausführen zu müssen; das Benutzerprogramm kann sogar entscheiden, das referenzierte Objekt nicht zu laden (oder auszuführen). Hat ein OBJECT-Element eine verknüpfte Imagemap, sollten Autoren nicht erwarten, dass dieses Objekt von jedem Benutzerprogramm empfangen oder ausgeführt wird.

Das Inhaltsmodell des MAP-Elements gestattet Autoren die Kombination des Folgenden:

  1. Eines oder mehrere AREA-Elemente. Diese Elemente haben keinen Inhalt, aber sie geben die geometrischen Bereiche der Imagemap an und den Link, der mit jedem Bereich verbunden ist. Beachten Sie, dass Benutzerprogramme AREA-Elemente im Allgemeinen nicht darstellen. Hierfür müssen Autoren einen alternativen Text für jedes AREA-Element über das alt-Attribut angeben (weitere Informationen in »Wie alternativer Text angegeben wird« unten).
  2. Blockinhalt. Dieser Inhalt sollte A-Elemente einschließen, die geometrische Bereiche der Imagemap angeben und den Link, der mit jedem Bereich verbunden ist. Beachten Sie, dass ein Benutzerprogramm den Blockinhalt eines MAP-Elements darstellen sollte. Autoren sollten diese Methode verwenden, um zugänglichere Dokumente zu erschaffen.

Wenn ein MAP-Element gemischten Inhalt enthält (sowohl AREA-Elemente als auch Blockinhalt), müssen Benutzerprogramme das AREA-Element ignorieren.

Autoren sollten die Geometrie einer Imagemap vollständig mit AREA-Elementen, vollständig mit A-Elementen oder, wenn der Inhalt gemischt ist, vollständig mit beiden Elementen angeben. Autoren möchten vielleicht den Inhalt mischen, damit auf der einen Seite ältere Benutzerprogramme die Map-Geometrie bearbeiten können, die durch AREA-Elemente angegeben wird, und neue Benutzerprogramme auf der anderen Seite Vorteil aus vielfältigerem Blockinhalt ziehen können.

Überschneiden sich zwei oder mehr definierte Bereiche, hat das den Bereich beschreibende Element, das zuerst im Dokument steht, den Vorrang (z.B. reagiert es auf Benutzereingabe).

Benutzerprogramme und Autoren sollten alternativen Text zu graphischen Imagemaps bieten, und zwar für den Fall, dass die Graphiken nicht verfügbar sind oder der Benutzer nicht auf sie zugreifen kann. Zum Beispiel können Benutzerprogramme den Text des alt-Attributs verwenden, um Textverweise anstelle einer graphischen Imagemap zu erzeugen. Solche Verweise können auf verschiedene Weise aktiviert werden (Tastatur, Sprachaktivierung usw.).

Anmerkung: MAP ist nicht rückwärtskompatibel zu Benutzerprogrammen, die für HTML 2.0 geschrieben wurden.

Beispiele Client-seitiger Imagemaps 

Im folgenden Beispiel erzeugen wir eine Client-seitige Imagemap für das Element OBJECT. Wir wollen den Inhalt der Imagemap nicht darstellen, wenn das OBJECT dargestellt wird, deshalb »verstecken« wir das Element MAP im Inhalt des Elements OBJECT. Folglich wird der Inhalt des Elements MAP nur dann dargestellt, wenn das OBJECT nicht dargestellt werden kann.

<HTML>
   <HEAD>
      <TITLE>Die coole Seite!</TITLE>
   </HEAD>
   <BODY>
     <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
     <MAP name="map1">
       <P>Navigiere durch die Web-Seiten:
       <A href="guide.html" shape="rect" coords="0,0,118,28">Hilfe</a> |
       <A href="shortcut.html" shape="rect" coords="118,0,184,28">Gehe zu</A> |
       <A href="search.html" shape="circle" coords="184,200,60">Suchen</A> |
       <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top 10</A>
     </MAP>
     </OBJECT>
   </BODY>
</HTML>

Vielleicht möchten wir den Inhalt der Imagemap sogar dann darstellen, wenn ein Benutzerprogramm das OBJECT wiedergeben kann. Zum Beispiel wollen wir vielleicht eine Imagemap mit einem OBJECT-Element verknüpfen und eine Textnavigation am Fuß der Seite anbringen. Um das zu realisieren, definieren wir das MAP-Element außerhalb des OBJECT-Elements:

<HTML>
   <HEAD>
      <TITLE>Die coole Seite!</TITLE>
   </HEAD>
   <BODY>
     <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
     </OBJECT>

     ...der Rest der Seite hier...

     <MAP name="map1">
       <P>Navigiere durch die Seite:
       <A href="guide.html" shape="rect" coords="0,0,118,28">Hilfe</a> |
       <A href="shortcut.html" shape="rect" coords="118,0,184,28">Gehe zu</A> |
       <A href="search.html" shape="circle" coords="184,200,60">Suchen</A> |
       <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top 10</A>
     </MAP>
   </BODY>
</HTML>

Im folgenden Beispiel erzeugen wir eine ähnliche Imagemap, diesmal mit dem AREA-Element. Beachten Sie die Verwendung des alternativen Texts mit Hilfe des Attributs alt:

<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
   <P>Dies ist eine Navigationsleiste.
   </OBJECT>

<MAP name="map1">
 <AREA href="guide.html" 
          alt="Hilfe" 
          shape="rect" 
          coords="0,0,118,28">
 <AREA href="search.html" 
          alt="Suchen" 
          shape="rect" 
          coords="184,0,276,28">
 <AREA href="shortcut.html" 
          alt="Gehe zu" 
          shape="circle"
          coords="184,200,60">
 <AREA href="top10.html" 
          alt="Top 10" 
          shape="poly" 
          coords="276,0,276,28,100,200,50,50,276,0">
</MAP>

Hier ist eine ähnliche Version, die das IMG-Element statt des OBJECT-Elements verwendet (mit der gleichen MAP-Deklaration):

<P><IMG src="navbar1.gif" usemap="#map1" alt="Navigationsleiste">

Das folgende Beispiel zeigt, wie Imagemaps gemeinsam verwendet werden können.

Verschachtelte OBJECT-Elemente sind nützlich, um Ausweichmöglichkeiten parat zu halten, falls ein Benutzerprogramm ein bestimmtes Format nicht unterstützt. Zum Beispiel:

<P>
<OBJECT data="navbar.png" type="image/png">
  <OBJECT data="navbar.gif" type="image/gif">
    Text, der das Bild beschreibt...
  </OBJECT>
</OBJECT>

Unterstützt das Benutzerprogramm das PNG-Format nicht, versucht es, das GIF-Bild darzustellen. Wenn es GIF nicht unterstützt (z.B. ein sprachbasiertes Benutzerprogramm), dann stellt es die Textbeschreibung dar, die als Inhalt des inneren OBJECT-Elements angegeben ist. Sind OBJECT-Elemente auf diese Weise verschachtelt, können Autoren die Imagemaps für diese Elemente gemeinsam nutzen.

<P>
<OBJECT data="navbar.png" type="image/png" usemap="#map1">
  <OBJECT data="navbar.gif" type="image/gif" usemap="#map1">
     <MAP name="map1">
     <P>Navigate the site:
      <A href="guide.html" shape="rect" coords="0,0,118,28">Hilfe</a> |
      <A href="shortcut.html" shape="rect" coords="118,0,184,28">Gehe zu</A> |
      <A href="search.html" shape="circle" coords="184,200,60">Suchen</A> |
      <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top 10</A>
     </MAP>
  </OBJECT>
</OBJECT>

Das folgende Beispiel zeigt, wie Anker angegeben werden können, um inaktive Bereiche innerhalb einer Imagemap zu erzeugen. Der erste Anker gibt einen kleinen kreisförmigen Bereich ohne verbundenen Verweis an. Der zweite Anker gibt einen größeren kreisförmigen Bereich mit den gleichen Mittelpunktkoordinaten an. Zusammen formen die beiden einen Ring, dessen Mitte inaktiv, und dessen Rand aktiv ist. Die Reihenfolge der Ankerdefinitionen ist wichtig, weil der kleinere Kreis den größeren Kreis überschreiben muss.

<MAP name="map1">
<P>
<A shape="circle" coords="100,200,50">Ich bin inaktiv.</A>
<A href="outer-ring-link.html" shape="circle" coords="100,200,250">Ich bin aktiv.</A>
</MAP>

Ähnlich dazu deklariert das Attribut nohref des AREA-Elements, dass ein geometrischer Bereich keinen verbundenen Link enthält.

13.6.2 Server-seitige Imagemaps

Server-seitige Imagemaps können in den Fällen interessant sein, in denen die Imagemap für eine client-seitige Imagemap zu kompliziert ist.

Eine server-seitige Imagemap kann nur für die Elemente IMG und INPUT definiert werden. Im Fall von IMG muss sich IMG innerhalb eines A-Elements befinden und das Boolesche Attribut ismap ([CI]) muss gesetzt sein. Im Fall von INPUT muss INPUT vom Typ »image« sein.

Aktiviert der Benutzer den Link durch Anklicken der Graphik, werden die Bildschirmkoordinaten direkt zum Server geschickt, auf dem das Dokument vorliegt. Bildschirmkoordinaten werden als Bildschirmpixelwerte relativ zur Graphik ausgedrückt. Normative Informationen über die Definition eines Pixels und wie seine Position bestimmt wird, finden Sie in [CSS1].

Im folgenden Beispiel definiert der aktive Bereich einen Server-seitigen Link. Durch einen Klick auf irgendeine Stelle im Bild werden die Koordinaten des Klicks zum Server geschickt.

<P><A href="http://www.acme.com/cgi-bin/competition">
        <IMG src="game.gif" ismap alt="Ziel"></A>

Der angeklickte Punkt wird wie folgt zum Server weitergeleitet. Das Benutzerprogramm erzeugt einen neuen URI aus dem URI, der vom href-Attribut des A-Elements angegeben ist. Dies geschieht durch Anhängen eines »?«, gefolgt von den x- und y-Koordinaten, getrennt durch ein Komma. Dem Link wird dann mit dem neuen URI nachgegangen. Klickt der Benutzer im gegebenen Beispiel auf die Stelle mit den Koordinaten x=10 und y=27, dann ist der abgeleitete URI »http://www.acme.com/cgi-bin/competition?10,27«.

Benutzerprogramme, die dem Benutzer nicht die Möglichkeit bieten, bestimmte Koordinaten auszuwählen (z.B. nicht graphische Benutzerprogramme, die auf Tastatureingaben angewiesen sind, sprachbasierte Benutzerprogramme usw.), sollten die Koordinaten »0,0« an den Server senden, wenn der Link aktiviert wird.

13.7 Visuelle Darstellung von Bildern, Objekten und Applets

Alle Attribute zu IMG und OBJECT, welche die visuelle Ausrichtung und Darstellung betreffen, wurden zu Gunsten von Stylesheets für missbilligt erklärt.

13.7.1 Breite und Höhe

Attributdefinitionen

width = length [CN]
Bild- und Objektbreite überschreiben.
height = length [CN]
Bild- und Objekthöhe überschreiben.

Werden die Attribute width und height angegeben, weisen sie das Benutzerprogramm an, die originalen Bild- oder Objektgrößen zu Gunsten dieser Werte zu überschreiben.

Ist das Objekt ein Bild, wird es skaliert. Benutzerprogramme sollten ihr Bestes geben, um ein Objekt oder Bild in der Breite und Höhe so anzupassen, wie es vom Autor angegeben ist. Beachten Sie, dass sich prozentual angegebene Längen auf den horizontal oder vertikal verfügbaren Raum beziehen, der aktuell zur Verfügung steht, und nicht auf die originale Größe des Bilds, Objekts oder Applets.

Die Attribute height und width geben Benutzerprogrammen Informationen über die Größe eines Bilds oder Objekts, so dass sie Platz reservieren und das Dokument weiter aufbauen können, während sie auf die Bilddaten warten.

13.7.2 Leerraum um Bilder und Objekte herum

Attributdefinitionen

hspace = pixels [CN]
Missbilligt. Dieses Attribut gibt die Größe des Leerraums an, der an der rechten und linken Seite des Elements IMG, APPLET oder OBJECT erscheinen soll. Ein Standardwert ist nicht vorgegeben, jedoch ist es im Allgemeinen eine geringes Maß ungleich Null.
vspace = pixels [CN]
Missbilligt. Dieses Attribut gibt die Größe des Leerraums an, der über und unter dem Element IMG, APPLET oder OBJECT erscheinen soll. Ein Standardwert ist nicht vorgegeben, jedoch ist es im Allgemeinen eine geringes Maß ungleich Null.

13.7.3 Rahmen

Ein Bild oder Objekt kann von einem Rahmens umgeben sein (z.B. wenn ein Rahmen vom Benutzer vorgegeben wurde, oder wenn das Bild Inhalt eines A-Elements ist).

Attributdefinitionen

border = pixels [CN]
Missbilligt. Dieses Attribut gibt die Breite des Rahmens von IMG oder OBJECT in Pixeln an. Die Voreinstellung für dieses Attribut hängt vom Benutzerprogramm ab.

13.7.4 Ausrichtung

Attributdefinitionen

align = bottom|middle|top|left|right
Missbilligt. Dieses Attribut gibt die Position eines IMG, OBJECT oder APPLET in Bezug zu seinem Kontext an.

Die folgenden Werte für align betreffen die Position des Objekts in Bezug auf den umgebenden Text:

Zwei weitere Werte, left und right, lassen das Bild zum aktuellen linken oder rechten Rand fließen. Sie werden im Abschnitt 15.1.3, »Umflossene Objekte« besprochen.

Unterschiedliche Auslegung von align. Benutzerprogramme interpretieren das align-Attribut unterschiedlich. Einige berücksichtigen nur, was in der Textzeile vor dem Element erscheint, einige berücksichtigen den Text auf beiden Seiten des Elements.

Anmerkung der Übersetzer:

Anstelle der missbilligten Atribute, die sich alle auf die visuelle Darstellung beziehen, ist der Einsatz von Stylesheets zu empfehlen.

Die Attribute width und height, die auf den ersten Blick ebenfalls der visuellen Darstellung dienen, sollten auch weiterhin benutzt werden. Wenn diese Werte bekannt sind bevor die Bilddatei selbst geladen ist, gestatten sie auch neueren visuellen Browsern einen »ruhigeren« Aufbau der Darstellung.

13.8 Wie alternativer Text angegeben wird

Attributdefinitionen

alt = text [CS]
Dieses Attribut gibt alternativen Text für Benutzerprogramme an, die Bilder, Formulare oder Applets nicht darstellen können. Die Sprache des alternativen Texts wird durch das Attribut lang festgelegt.

Viele Elemente, die primär nicht darauf ausgelegt sind, Text darzustellen (IMG, AREA, APPLET und INPUT), bieten Autoren die Möglichkeit, einen alternativen Text anzugeben, der als Inhalt dient, wenn das Element nicht wie vorgesehen dargestellt werden kann. Die Angabe von alternativem Text unterstützt Benutzer ohne graphische Anzeigeterminals, Benutzer, deren Browser keine Formulare unterstützen, Benutzer mit Sehschwächen, die Sprachsynthesizer verwenden, diejenigen, die ihren graphischen Browser so konfiguriert haben, dass Bilder nicht angezeigt werden usw.

Das alt-Attribut muss für die Elemente IMG und AREA angegeben werden. Es ist optional für die Elemente INPUT und APPLET.

Auch wenn alternativer Text sehr hilfreich sein kann, so muss er doch mit Vorsicht verwendet werden. Autoren sollten die folgenden Richtlinien beachten:

Entwickler sollten den Abschnitt »Anmerkungen zur Zugänglichkeit« im Anhang B lesen, um Informationen zu erhalten, wie in Fällen, in denen alternativer Text fehlt, zu verfahren ist.