3.2Der Prolog
Im Prolog eines SVG-Dokuments werden Definitionen und Einstellungen zur Verarbeitung des Dokuments festgelegt. Der Prolog besteht aus den folgenden beiden Teilen:
- XML-Deklaration
- Dokument-Typ-Deklaration
Da es sich bei einer SVG-Datei um ein XML-Dokument handelt, muß die XML-Deklaration <?xml version="1.0"?>
lauten. Neben der XML-Versionsnummer, die dem Attribut version
zugewiesen wird, liefert die Deklaration zwei weitere Informationen an den XML-Prozessor, der das Dokument bearbeiten soll. Zum einen den Zeichensatz, mit dem das Dokument kodiert wurde (z.B. ISO-8859-1
, UTF-16
, ...), und ein spezielles Flag, welches die Werte yes
oder no
annehmen kann und angibt, ob externe Datenquellen für die Verarbeitung des Dokuments nötig sind. Der Zeichensatz wird mit dem Attribut encoding
festgelegt, das Flag mit standalone
. Da die Verwendung beider Attribute optional ist und sie nicht zwingend in der XML-Deklaration stehen müssen, besitzen sie jeweils einen Standardwert. Verzichtet man auf das Attribut encoding
, geht der XML-Prozessor von einer UTF-8-Kodierung des Dokuments aus. Fehlt das Attribut standalone
, wird der Standardwert no
verwendet. standalone
findet in der Praxis allerdings selten Anwendung und kann daher im Regelfall weggelassen werden.
Anschließend folgt die Deklaration des Dokument-Typs. Durch sie wird die Grammatik einer Klasse von Dokumenten festgelegt. In der Praxis kann ein Viewer meist auch ohne diese Angabe die SVG-Grafik korrekt anzeigen. Dennoch sollte jedes SVG 1.1-konforme Dokument die Zeile <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
beinhalten. Obwohl in diesem sogenannten Public Identifier immer eine URL angegeben wird, welche in diesem Fall auf die SVG Document Type Definition zeigt, muß keine ständige Verbindung ins Netz vorhanden sein, da es sich hierbei hauptsächlich um einen eindeutigen Bezeichner handelt. Die URL dient eher als Alternativreferenz, sollte der XML-Parser die DTD nicht implementiert haben.
Nach dem Prolog folgt das sogenannte Wurzelelement. Dieses lautet grundsätzlich wie der Name der Dokument-Typ-Deklaration bzw. im Falle von SVG einfach svg
. Das <svg>
-Element kann natürlich wie jedes andere Element auch selbst einige Attribute, wie z.B. height
und width
für die Ausdehnung der Grafik oder diverse Ereignisbehandler (siehe Ereignisbehandlung), enthalten. Eines der wichtigeren Attribute nennt sich xmlns
. Es definiert den Namensraum des Dokuments, sprich die Menge von Namen, welche durch eine URI referenziert werden, die in einem XML-Dokument für die Namen von Elementtypen und Attributen verwendet werden können. Namensräume finden Verwendung, wenn in einem Dokument mehrere XML-Sprachen verwendet werden sollen. Beispielsweise gäbe es in einem XML-Dokument, das XHTML- und SVG-Anteile besitzt, Namenskonflikte, da beide Sprachen ein Anker-Element des Namens <a>
besitzen. Damit der Parser beim Auftreten des Elements weiß, welcher Sprache es zugeordnet werden soll, erhält jede Sprache einen eigenen Namensraum. Der Namensraum eines validen SVG-Dokuments der Version 1.1 wird mit der URI http://www.w3.org/2000/svg
definiert. Wird der Namensraum mittels xmlns="http://www.w3.org/2000/svg"
angegeben, wird er auch Standardnamensraum genannt. Das Element, welches das Attribut xmlns
beinhaltet, und alle Elemente und Attribute, die sich innerhalb dieses Elements befinden, gehören diesem Namensraum an und können wie gewohnt verwendet werden (z.B. <a href="http://www.selfsvg.info">
. In der Regel wird das Attribut xmlns
gleich in das Wurzelelement geschrieben. Bei SVG-Grafiken ist es allerdings nicht unbedingt notwendig, da es implizit gesetzt wird, falls es nicht angegeben wurde. Möchte man nun eine zusätzliche Sprache verwenden, muß ein weiterer Namensraum festgelegt werden. SVG selbst verwendet einige Attribute der XML Linking Language (XLink). Darum muß in diesem Fall ein zusätzlicher Namensraum angegeben werden. Dies geschieht durch das Attribut-Wert-Paar xmlns:xlink="http://www.w3.org/1999/xlink"
, das man ebenfalls im SVG-Wurzelelement eintragen sollte. Möchte man nun ein XLink-Element oder XLink-Attribut verwenden, so muß es mit dem Präfix xlink
beginnen. Das <image>
-Tag benutzt beispielsweise das Attribut xlink:href
, um eine Referenz auf eine Grafik zu setzen. Das folgende Beispiel sollte dies etwas verdeutlichen.
<?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <image x="10" y="10" width="100" height="119" xlink:href="tux.png" /> </svg>
Tiefgreifendere Informationen zum Thema Namensräume erhält man auf der W3C-Website Namespaces in XML [ W3C05h]