|
SVG (Scalable Vector Graphics)
ist eine 'Programmiersprache' zur Herstellung von Objektgrafik. Alle modernen Browser beherrschen SVG. Ältere Browser brauchen dazu ein Zusatz-Programm (Plugin). |
XSL ist eine 'Programmiersprache' zur
dynamischen Herstellung verschiedener Produkte aus
XML-Daten. Alle gängigen Browser beherrschen XSL. |
| Die Kombination beider Technologien ermöglicht es, dynamische Objektgrafik aus XML-Daten herzustellen. Im Gegensatz zu anderen Methoden wird diese Arbeit am Client-PC ausgeführt. | Sowohl SVG als auch XSL sind Mitglieder der XML-Familie und daher Offene Standards, nicht lizenzpflichtig, und mit allen anderen Mitgliedern der XML-Familie kompatibel. |
XSL
|
Extended Stylesheet Language |
| Einfache Grafik | Minimal-Objektgrafik mit XSL-Programm |
| XY-Grafik | Durch XML-Daten gesteuerte XY-Grafik - Rechnen mit XSL Variablen |
| Säulen-Grafik | Durch Daten gesteuerte Säulengrafik - Schleifenzähler mit XSL |
| XHTML+SVG | Dynamische Erzeugung einer XHTML-Webseite mit Inline SVG |
| Einbettung | von SVG-Objektgrafik in Webseiten |
XHTML mit Inline SVG - erzeugt mit XSL |
|
|
▲
Das größte Potential hat Inline-SVG Dabei wird SVG-Code direkt in den HTML-Code einer XHTML-Seite eingebettet. ► Im Beispiel werden zur Vereinfachung keine XML-Daten verwendet, daher wird immer die gleiche Webseite und Grafik erzeugt. ▲ Alle gängigen Browser zeigen die HTML-Bestandteile der Webseite an. ► Die SVG-Grafik wird allerdings nur von Browsern der Gecko-Familie angezeigt: Sie sind derzeit als einzige in der Lage, eingebettenen (Inline) SVG-Code in einem XSL-Datenstrom richtig zu verarbeiten. ► Auch Scripting (Interaktiver Zugriff auf die Grafik) funktioniert derzeit nur mit diesen Browsern. ► Zur besseren Unterscheidung ist die SVG-Grafik gelb unterlegt. ► Sie können die XHTML-Webseite auch in ein eigenes Browser-Fenster laden, und zwar als Der Opera-Browser zeigt dabei deutliche Unterschiede. |
|
XSL-Programm► Das aufgerufene XML-Dokument enthält zur Vereinfachung keine Daten. Daher wird immer die gleiche XHTML-Webseite und Grafik erzeugt.► Der verwendete xlmns Namespace (Befehls-Umfang) enthält xsl, xhtml und svg ► Die Ausgabe-Methode für eine Webseite wird mit "html" angegeben. ► Das XSL-Programm ist auf ein Minimum beschränkt. Es enthält nur ein einziges template, darin befinden sich keine weiteren XSL-Anweisungen, sonbern nur Daten (blau). ► Aus diesen Daten wird das Produkt (XHTML-Webseite) hergestellt. ► In den Quelltext der XHTML-Webseite ist ein SVG-Element eingebettet. ♦ Details zu CSS und SVG-Objektgrafik |
Datei demo_s40.xsl (vereinfacht)
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg" > <xsl:output method="html" /> <xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
</xsl:template><head></head> <body> <div>Diese Webseite wurde mit XSL erzeugt</div> Beginn mit XHTML<br /> Einbettung einer SVG-Objektgrafik: <div style="background-color:#FF0;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
</div>
<circle cx="50" cy="50" r="20"
fill="red"/>
</svg>
<rect x="15" y="15" width="30" height="30" fill="blue"/> <g transform="translate(60,30)">
<polygon id="dreieck" points="-20,11 20,11 0,-23"
fill="#0F0" />
</g><text font-size="18" x="60" y="30">SVG</text> Zuletzt wieder XHTML </body> </html> </xsl:stylesheet> |
XHTMList eine 'Programmiersprache' zur Herstellung von Webseiten. Sie unterscheidet sich nur minimal vom klassischen HTML, ist jedoch Mitglied der XML-Familie.▲ Inline-SVG Alle XML-Mitglieder sind miteinander kompatibel. Daher kann eine XHTML.Webseite Objekte anderer XML-Mitglieder enthalten, und zwar direkt in den Quelltext eingebettet. ▲ Scripting Alle XML-Objrekte werden in den Objektbaum der XHTML-Webseite integriert, gehören daher dem gleichen document an. ▲ Daher ist mit Javascript voller Zugriff auf alle Elemente möglich. Mit Elementen der Webseite (Formulare, Links, Buttons, ..) kann daher jedes Element der Grafik verändert werden. Vereinfachung:
Das CSS <style> Element und das
Javascript <script> Element sind ohne Inhalt eingefügt.
Wenn sie Interesse an den Details haben, laden sie die
Seite demo_s42.xhtml Mit Rechtsklick wird der volle XHTML-Quelltext angezeigt. |
XHTML-Quelltext Datei demo_s40.xml
<?xml version="1.0" encoding="utf-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css" media="screen"></style> <script type="text/ecmascript"></script> </head> <body> <div class="hdr">Diese Webseite wurde mit XSL erzeugt</div> Beginn mit XHTML<br /> Einbettung einer SVG-Objektgrafik: <div style="background-color:#FF0; height:80px; width:100%;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
</div><circle cx="50" cy="50" r="20" fill="red"/> <rect x="15" y="15" width="30" height="30" fill="blue"/> <g transform="translate(60,30)"> <polygon points="-20,11 20,11 0,-23" fill="#0F0" /> </g> <text font-size="18" x="60" y="30">SVG</text> </svg> Zuletzt wieder XHTML </body> </html> |
▼ DateinameLeider zeigen alle gängigen Browser eine lästige Abhängigkeit von den Datei-Namen.Zum Test können sie die gleiche Datei mit unterschiedlichen Namen in einem eigenen Browser-Fenster öffnen: |
• Moderne Browser (Firefox, Mozilla, Netscape, Opera, ..) arbeiten mit *.xml oder *.xhtml korrekt, zeigen jedoch für *.htm nur eine gewöhnliche Webseite. • Opera verarbeitet auch die Inline-Grafik richtig - Das funktioniert derzeit noch nicht, dann der gleiche Code mit XSL erzeugt wurde. • M$IE versteht derzeit weder *.xml noch *.xhtml und zeigt für *.htm nur eine gewöhnliche Webseite. |
Einbettung von dynamischer Grafik in Webseiten |
|
|
Zur Einbettung von SVG-Grafik in Webseiten sind verschiedene Methoden möglich. ♠ EntwicklerInnen müssen leider einen Kompromiss zwischen der sinnvollen Anwendung moderner Informatik-Methoden und der Rücksicht auf die veraltete Technik des IT-Marktführers finden. ♠ Nachdem auf ein Monopol-Unternehmen kein Innovationsdruck wirkt, kann es noch lange dauern, bis eine neue Version des völlig veralteten M$IE-Browsers herauskommt. ♠ Auch ein mächtiges Unternehmen kann (derzeit) die technische Entwicklung zwar behindern, aber nicht aufhalten. ♠ Allerdings arbeitet eine mächtige Lobby daran, das zu ändern, z.B. mit neuen Patent-Gesetzen . . |
♠
Eine aufwändige, aber immerhin mögliche Lösung ist die Browser-Weiche: ♠ Mit Javascript lässt sich feststellen, ob ein M$IE-Browser verwendet wird. In diesem Fall wird die Objektgrafik durch Pixel-Grafik ersetzt (nur GIF, da M$IE auch mit PNG Probleme hat). Ein Hinweis sollte M$-Fans allerdings daran erinnern, dass mit jedem modernen Browser eine Objektgrafik verwendet wird. ♠ Mit Javascript + VBScript lässt sich testen, ob mit dem M$IE Browser ein Adobe SVG Plugin verwendet wird. Allerdings erfordert dieser Test Lese-Zugriff auf die Registry-Datenbank und wird daher von allen gängigen Sicherheits-Einrichtungen unterbunden. ♠ Die technisch besten Browser-Weichen lassen sich mit Server-Programmen (Perl, PHP) realisieren. Allerdings zahlt man einen hohen Preis, je nachdem wieviel SVG-Funktionalität man mit anderen Methoden nachbildet. Außerdem steigt die Belastung des Webservers, je nach Methode sogar um Größenordnungen. ♠ Monopole sind teuer - für KonsumentInnen und für EntwicklerInnen. |
Inline-<svg>Diese Methode hat das größte Zukunfts-Potential:SVG-Code ist direkt im HTML-Code enthalten. ► Allerdings funktioniert die Methode nur mit XHTML-Webseiten. EIn Grund mehr, von HTML auf XHTML umzusteigen. ▲ Die SVG-Grafik kann mit CSS-<style> formatiert und mit Javascript-<script> programmiert und animiert werden. ▲ Nur bei Inline-Einbettung sind die Grafik-Objekte in den Objekt-Baum der Webseite integriert. ▲ Zusätzlich lassen sich externe *.svg Dateien auch als <inline>, <object> und sogar <embed /> in XHTML-Webseiten einbetten. ▲ Die mehrfache Einbettung der gleichen Objektgrafik ist kein Problem - Ebenso wie der gleiche Text mehrfach auf einer Webseite vorkommen darf. ► Wenn eine Objektgrafik umfangreichen Code erfordert, dann ist es jedoch besser, sie als eigene Datei auszulagern. Sie wird auch bei mehrfacher Verwendung nur einmal vom Webserver angefordert und danach bei jeder Verwendung aus dem Browser-Cache geladen. |
Grundgerüst einer XHTML-Webseite mit Inline-SVG Grafik.
<?xml version="1.0" encoding="utf-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml"> <head>
<style type="text/css" media="screen"></style>
</head><script type="text/ecmascript"></style> <body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
</svg> </html> |
<iframe>behandelt den geladenen Inhalt so wie eine eigene Webseite.▲ Funktioniert mit allen Browsern und auch mit XHTML, ist daher Zukunfts-sicher. Derzeit beste Methode für die Einbettung externer Dateien. Auf dieser Seite ist jedes Beispiel in einen <iframe> eingebettet - sichtbar und deutlich abgegrenzt. ▲ Beste Methode zur Einbettung von SVG-Grafik mit umfangreichem Code, auch in XHTML. + Die Methode ist übersichtlicher, der HTML-Code bleibt kompakt. + Eine eigene Grafik-Datei wird bei mehrfacher Verwendung (auf der gleichen oder auf anderen Webseiten) rascher aus dem Browser-Cache geladen. ▲ Einzige Methode, die es erlaubt, die externe Datei (mit Javascript oder HTML-Formular) im Rahmen auszutauschen. ♦ Details zu Innenrahmen. |
HTML-Innenrahmen zur Einbettung externer Dateien
<iframe name="if1" id="if1"
src="demo.svg"
style="height:200px; width:100%;"> </iframe> ▲ Ein iframe lässt sich mit zusätzlichen Attributen 'verstecken': frameborder="0" scrolling="no"
▲
Geben sie immer die Attribute name
und id (mit gleichen Namen für beide Attribute,
aber eindeutig nur für diesen Innenrahmen) zu verwenden.
|
<object>Standard-Methode zur Einbettung externer Dateien in HTML.Sollte eigentlich auch die beste Methode zur Einbettung von *.svg Dateien sein. ▲ Funktioniert mit allen modernen Browsern und auch mit XHTML. ► Hat mit M$IE + Adobe SVG Plugin (Version 3.0) am besten funktioniert, wurde seither jedoch (je nach Version) wieder eingeschränkt. ► Je nach Version von Browser & PlugIn wurden Probleme berichtet, wenn die gleiche SVG-Grafik-Datei auf einer Webseite mehrfach als <object> eingebettet ist. ▼ Der Inhalt kann nach dem Laden der Webseite nicht mehr ausgetauscht werden. |
HTML-Objekt zur Einbettung externer Dateien
<object data="demo.svg"
Der eingeschlossene Text ('Ihr Browser kann nicht ..') wird angezeigt,
wenn der Browser das Objekt nicht verarbeiten kann.
type="image/svg+xml" style="height:200px; width:100%;"> Ihr Browser kann das SVG-Objekt nicht anzeigen
</object>
|
<embed>ist ein überholtes HTML-Element (deprecated) und sollte nicht mehr eingesetzt werden.► Wird dennoch (derzeit) vom Adobe Plugin unterstützt, vermutlich aus Resignation gegenüber den Fehlern des M$IE Browsers. ► Die Version <embed> funktioniert zwar mit allen gängigen Browsern, trotzdem sollte - wenn überhaupt - nur die XHTML-kompatible Version <embed /> eingesetzt werden. ▼ Der Inhalt kann nach dem Laden der Webseite nicht mehr ausgetauscht werden. |
HTML-Einbettung
<embed src="demo.svg"
style="height:200px; width:100%;" />
Nicht für neue Entwicklung !
|
|