| Moderne Browser stehen derzeit in einer Phase rascher Entwicklung, auch hinsichtlich SVG. Es ist daher zweckmäßig, den aktuellen Stand der Technik selbst live zu testen. | Wählen sie die gewünschte Test-Variante und lassen sie die Test-Datei zur Anzeige in den Rahmen laden. |
SVG |
Scalable Vector Graphics |
| Live-Test | Anzeige wählbarer Varianten von SVG und Einbettung |
| Variable | Erläuterung der wählbaren Test-Variablen |
| SVG-Quelltext | Muster der zum Test verwendeten SVG-Anweisungen |
| SVG-Erzeugung | Erzeugung von SVG-Grafik am Server-PC |
| SVG-Anwendung | Animation, Steuerung durch AnwenderInnen (Interaktion) |
Wählbare Variable |
|
| Durch Kombination der Optionen ergeben sich zahlreiche Test-Varianten. | |
Browser● Moderne Browser wie Firefox, Opera, Safari, Chrome ... beherrschen die meisten Varianten.● Je nach Browser erscheinen im Rahmen Fehlermeldungen, wenn er nicht in der Lage ist, die gewählte Variante anzuzeigen. • Nur der technisch veraltete M$IE Browser beherrscht noch immer nicht den seit 2001 gültigen SVG-Standard... • Mit dem Hilfsprogramm Adobe SVG Viewer kann sogar der M$IE Browser SVG-Grafik anzeigen. Allerdings zeigen die verschiedenen Versionen beachtliche Unterschiede. Auch der Adobe SVG Viewer ist mittlerweile technisch überholt. |
Datei oder Inline-SVGDas größte Potential hat die direkte (Inline) Einbettung von SVG-Anweisungen in den Quelltext von → XHTML Webseiten. Zusätzlich dazu lassen sich eigene Dateien *.svg verwenden.Der M$IE Browser kann (auch) mit Adobe Plugin nur externe SVG-Dateien anzeigen, kein Inline SVG. XSList eine → XML-'Programmiersprache' zur Erzeugung variabler Produkte aus → XML-Daten. Alle modernen Browser beherrschen → XSL.In diesem Fall erhält der Browser die rohen XML-Daten und erzeugt daraus selbst das Produkt (hier: HTML-Tabelle oder SVG-Grafik). ♦ Details zur Erzeugung von SVG mit XSL. |
Einbettung• Sie können die Test-Objekte mit der Option <iframe> direkt in den Test-Rahmen dieser Seite laden.Mit Rechtsklick in den Test-Rahmen wird dessen Quelltext angezeigt (HTML, XML, SVG). Pixel-Grafik besteht aus binären Daten und ist nicht als Text darstellbar. • Alternativ können sie in den Test-Rahmen eine HTML- oder XHTML-Webseite laden, welche das gewählte Test-Objekt auf verschiedene Weise einbettet. Damit lässt sich der Mechanismus der Einbettung genau studieren. Achten sie beim Rechtsklick auf die Zeiger-Position: Sie können entweder den Quelltext der Einbettungs-Seite (farbiger Hinetergrund) anzeigen oder das darin eingebettete Test-Objekt. Es gibt verschiedene Möglichkeiten, externe Dateien in eine Webseite einzubetten. ● Die → Einbettung als <iframe> wird in diesem Web bevorzugt, weil sie mit gängigen Browsern am besten funktioniert. |
SVG-Umfang► Einfache 'statische' SVG-Grafik stellt die geringsten Ansprüche.► → Scripting (Programmierung mit Javascript / Ecmascript) stellt die höchsten technischen Ansprüche. Damit ist der unbeschränkte Live-Zugriff auf alle Grafik-Elemente möglich. • Animation: Wird im Beispiel mit Drehung und Bewegung des Quadrats demonstriert. • Interaktion: Kreis und Quadrat ändern ihre Farbe beim Anklicken. Das funktioniert jedoch nicht in allen Varianten, weil das onclick-Ereignis (Event) nicht immer bis zum SVG-Objekt weitergeleitet wird. |
Pixel-GrafikDie beiden Pixel-Grafik Varianten (GIF und PNG) dienen als Vergleich von PixelGrafik mit SVG-ObjektGrafik.• Bei Auswahl der Datei-Erweiterung .php werden auch diese Dateien mit einem → PHP-Programm dynamisch erzeugt). • Alle PixelGrafik Dateien haben in der Mitte ein 'Loch' zur Kontrolle der Transparenz. |
|
Test - SVG - Quelltext |
|
|
Die verwendeten SVG-Tests verwenden eine der beiden hier vorgestellten
Grund-Varianten. Die beiden blau gedruckten
Programm-Blöcke unterscheiden sich nur durch ihre Position in der Datei,
nicht in ihrem Inhalt. Bei statischer SVG-Grafik ohne Scripting fällt der <script>-Block zur Gänze weg. |
Der Datei-Name spielt eine untergeordnete Rolle, er kann für eine reine
SVG-Datei u.a. *.xml oder *svg
lauten. Nur der M$IE-Browser wertet die Datei-Endung wichtiger als alle anderen Informationen und zeigt nur *.svg Dateien an. |
|
Aufbau einer XHTML-Webseite mit integrierter SVG-Grafik.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript"> // <![CDATA[ // Javascript-Anweisungen
// ]]> </script> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <!-- SVG-Anweisungen -->
</svg></body> </html> |
Aufbau einer 'reinen' SVG-Test-Datei
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <svg xmlns="http://www.w3.org/2000/svg"> <script type="text/ecmascript"> <![CDATA[ // Javascript-Anweisungen
]]> </script> <!-- SVG-Anweisungen -->
</svg> |
|
Die →
XHTML-Datei beginnt mit der
<?xml ?>-Deklaration. Danach folgt optional die <!DOCTYPE >-Deklaration, in diesem Fall für HTML. Darauf beginnt mit <html> die XHTML-Webseite. Sie besteht wie jede andere Webseite aus je einem <head> und<body> Element. Im <head> sind allfällige <script> (→ Javascript)-Programme und Daten enthalten. Hier ist auch der Platz für ein optionales <style> (→ CSS)-Element, zur Formatierung sowohl der HTML- als auch der SVG-Elemente. Der <body> kann neben HTML-Elementen alle Mitglieder der XML-Familie enthalten, z.B. auch 1 oder mehrere <svg>-Elemente. |
Die SVG-Datei beginnt mit der
<?xml ?>-Deklaration. Danach folgt optional die <!DOCTYPE >-Deklaration, in diesem Fall für SVG. Darauf beginnt das <svg>-Element. Optional sind → CSS <script> und → Javascript <style>-Elemente enthalten. Sie sind identisch formuliert wie in der XHTML-Datei, jedoch an anderer Stelle. Danach folgen die SVG-Anweisungen für die einzelnen ObjektGrafik-Elemente. |
Statische SVG-GrafikDas <script>-Element enthält keine Anweisungen für SVG-Elemente oder ist gar nicht vorhanden. |
Dynamische SVG-GrafikDiese Dateien enthalten <script>-Elemente mit Javascript Anweisungen.Die Script-Programme der hier verwendeten Beispiele demonstrieren einfache Animation (Rotation, Translation) und Interaktion (Farb-Änderung beim Anklicken). |
PHPBeide SVG-Grundformen und natürlich alle Varianten lassen sich dynamisch mit PHP erzeugen. Diese Variante ist typisch für die Live-Erzeugung von Produkten (Tabellen, Diagrammen) aus Datenbanken.● Die leistungsfähigste Variante verwendet XLS, weil damit auch die Leistung der Client-PC genutzt wird. ● An 2. Stelle steht die Live-Erzeugung von SVG-Grafik, weil die Herstellung wenig Server-Leistung erfordert und der Transport geringe Daten-Mengen erfordert. Inline-SVG verwendet ungefähr gleiche Daten-Mengen, jedoch weniger einzelne Dateien als getrennte SVG-Dateien. ● An letzter Stelle steht die Live-Erzeugung von Pixel-Grafik, weil diese Variante die meiste Server-Leistung und das größte Transport-Volumen erfordert. |
XLSMit XLS kann man aus XML-Rohdaten jedes beliebige Text-Produkt erzeugen, hier z.B. eine HTML-Tabelle oder eine SVG-Grafik. Alle modernen Browser unterstützen XLS.Die Menge der transportierten Daten ist mit XML+XLS besonders gering. Das aufwändige Rendern (Umwandlung in Bildpunkte) erfolgt in diesem Fall vom Client-PC, der bei geringerer Wartezeit mehr eigene Leistung beitragen kann. • Mit RechtsKlick auf das Test-Objekt werden in diesem Fall die XML-Daten angezeigt, nicht der erzeugte Quelltext. ♦ Details zur Erzeugung dynamischer SVG-Grafik mit XSL |
EinbettungIm einfachsten Fall werden die gewählten Test-Objekte in einen <iframe> InnenRahmen (Test-Rahmen dieser Seite) eingebettet.Mit Rechtsklick in den Rahmen wird der Quelltext des Test-Objekts angezeigt. Ausnahme: PixelGrafik-Dateien enthalten binäre Daten, die sich nicht als Text anzeigen lassen. |
Wahlweise können sie in den Test-Rahmen eine HTML- oder XHTML-Seite laden und das Test-Objekt in diese Seite einbetten. Das erlaubt eine genauere Untersuchung der Tests, insbesondere dann, wenn man den Inhalt des Test-Rahmens in einem neuen Tab öffnet und dessen Quelltext anzeigt. |
Dynamische Erzeugung von (SVG)-Grafik |
|
|
Wenn man wünscht, Diagramme aus wechselnden Daten auf Webseiten anzuzeigen,
dann ist es notwendig, die Grafik Live am Server zu erzeugen. Ein häufiger und typischer Fall ist die Live-Erzeugung von Diagrammen aus den aktuellen Daten einer → Datenbank. Alle in diesem Kapitel genannten Programme laufen normalerweise auf einem (entfernten) Server-PC. Sie sind für AnwenderInnen (Clients) nicht einsehbar und daher relativ gut geschützt. |
Die Verarbeitung variabler Live-Daten an einem Webserver ist etablierte Technik
(→
LAMP-Server). Man kann alle gängigen Programmiersprachen dazu verwenden,
z.B. → Java,
→ Perl,
→ PHP, ... Dabei kann man zwischen mehreren Grafik-Varianten wählen, die man im ↑ Test-Bereich dieser Seite in einfacher Form ausprobieren kann. |
XML+XLS+SVG● Die leistungsfähigste Variante verwendet → XML+XLS zur Erzeugung von SVG Objekt-Grafik.• Der Server sendet die angeforderten Daten als Text in einfacher XML-Form. Die Herstellung derart einfacher Texte erfordert sehr wenig Server-Leistung und ein geringes Transport-Volumen. Die XML-Daten werden beim Laden des Test ↑ Beispiels als Quelltext angezeigt. |
• Das Programm zur Erzeugung der SVG-Grafik aus den XML-Daten ist in einer XLS-Datei enthalten, welche der Server bei Bedarf sendet. Das XLS-Programm ist eine einfache statische Text-Datei. Der Browser speichert das XLS-Programm und fordert es daher für beliebig viele Diagramme gleicher Sorte nur einmal an. • Je nach XLS-Programm kann man aus den gleichen (!) XML-Daten unterschiedliche Produkte erzeugen - im Beispiel eine HTML-Tabelle oder eine SVG-Grafik. • Das XLS-Programm wird vom Browser (!) ausgeführt. Dabei nutzt man die ansonsten meist brachliegende Leistung der Client-PC und entlastet den Server. |
SVG Objekt-Grafik● Die Live-Erzeugung von fertiger SVG-Grafik ist weit effizienter als jene von Pixel-Grafik, weil am Server nur das SVG-Programm erzeugt wird, und das aufwändige Rastern (Erzeugung von Bildpunkten nach den SVG-Regeln) am Client-PC erfolgt.• Die Methode ist allerdings weniger effizient als jene mit XML+XLS, bei welcher auch das SVG-Programm am Client-PC erzeugt wird. |
Bei Verwendung von SVG hat man die Wahl zwischen 2 Varianten: • Inline-SVG wird direkt in den Quelltext von XHTML-Webseiten eingesetzt. Das ist kompakter und bietet interessante neue Gestaltungs-Möglichkeiten, die im ↑ Test-Beispiel nur angedeutet werden. • SVG in Form eigener Dateien ist etwas schwerfälliger, jedoch derzeit die einzige Möglichkeit, SVG auch mit den veralteten M$IE-Browsern + Adobe SVG-Viewer zu verwenden. |
Pixel-Grafik● In diesem Fall werden die Grafik-Regeln bereits am Server in Bildpunkte (Pixel) umgesetzt. Das erfordert normalerweise weit mehr Server-Leistung und Transport-Volumen als für Objekt-Grafik.• Diese Variante ist derzeit die einzige Möglichkeit, Grafik mit dem veralteten M$IE-Browser ohne Zusatz-Programme anzuzeigen. |
Bei Verwendung von Pixel-Grafik hat man die Wahl zwischen 2 realistischen Möglichkeiten: • Das offene Datei-Format PNG wird normalerweise am besten komprimiert und braucht daher das geringste Transport-Volumen. Außerdem bietet nur PNG variable Transparenz (α-Kanal). • Das Datei-Format GIF ist mittlerweile lizenzfrei verwendbar, jedoch weniger leistungsfähig als PNG. • JPEG eignet sich nicht für typische Geschäftsgrafik und lässt sich nicht verlustfrei komprimieren. Andere Grafik-Formate wie BMP, TIFF, etc. eignen sich nicht für das Internet. |
Dynamische Anwendung von SVG-Grafik |
|
|
Javascript (JS, EcmaScript) Wenn man sich entschlossen hat, SVG-Grafik herzustellen, dann hat man unabhängig von der ↑ Herstellung die Möglichkeit zur → Programmierung mit Javascript. Diese Programme beziehen sich jedoch nicht auf die Herstellung der Grafik, sondern auf ihre Anwendung. |
JS im QuelltextJavascript-Programme sind im gleichen Quelltext enthalten wie die SVG-Anweisungen. Die Verwendung von Javascript für Webseiten ist gut bekannt, jene für ObjektGrafik leider nur wenig.Der Quelltext ist offen einsehbar, daher kann man weder die Programme noch die darin allenfalls enthaltenen Daten schützen. |
DOM-ModellJavascript bietet mit den → DOM-Funktionen die Möglichkeit, auf jedes einzelne Element der Grafik zuzugreifen, d.h. auf jede einzelne Linie, jedes Rechteck, jeden Text, usw.Mit DOM-Methoden kann man alle Eigenschaften ändern, z.B. Position, Größe, Drehung, Schrift, Farbe, usw. Außerdem kann man neue Grafik-Objekte erzeugen und vorhandene löschen. Das DOM-Modell bietet ausgezeichnete Möglichkeiten zur intelligenten Anwendung, mehr durch die Phantasie als durch die Technik begrenzt sind. |
AnimationWenn es der anschaulichen Darstellung dient, kann man jede Eigenschaft jedes Grafik-Elements zeitlich ändern.In den hier gezeigten ↑ Beispielen wird demonstriert: • Rotation eines Elements (Quadrat) • Translation (Quadrat), d.h. Änderung der Position, in diesem Fall unterschiedlich für die X- und die Y-Richtung. Interaktion:Man kann Javascript-Programme durch Aktionen der AnwenderInnen - z.B. Mausklick, Formular-Eingabe, usw. auslösen. In den hier gezeigten ↑ Beispielen wird die Farbe von Objekten beim Anklicken geändert. |
Inline-SVGIn einer modernen XHTML-Webseite kann man HTML- und SVG-Elemente besonders gut miteinander kombinieren.Das hat einige angenehme Auswirkungen: • CSS: Sowohl HTML- als auch SVG-Elemente lassen sich mit einem einzigen zentralen CSS_Block (oder mit einem externen StyleSheet) formatieren. Auch die Javascript-Methoden des style-Objekts lassen sich auf alle Elemente des Dokuments anwenden. • Javascript: DOM-Methoden lassen sich sowhl auf die HTML- als auch auf die SVG-Elemente anwenden. |
In den ↑ Beispielen werden nur wenige einfache Effekte dieser Kombination angedeutet: Die Bewegung der animierten SVG-Elemente lässt sich auf die gesamte Webseite ausdehnen. Dabei kann man die Überlagerungen (Vordergrund, Hintergrund) genau steuern. Mit SVG-Elementen lassen sich HTML-Elemente interaktiv steuern: Klick auf den SVG-Kreis ändert die Hintergrund-Farbe eines HTML-Elements. Umgekehrt kann man mit HTML-Elementen SVG-Grafik steuern: Klick auf den HTML-Hyperlink ändert den Text in der SVG-Grafik. |
|