embed + SVG mit variabler Groesse
Stefan Richter
- html
Hallo,
ich habe ein kleines Problem. Ich generiere mit Cocoon aus XML einen SVG-Baum und binde die Grafik dann in HTML mit <embed name="figure" height="400" width="700" type="image/svg" src="exporttree.svg"> ein. Das funktioniert auch alles, jedoch habe ich das Problem, dass ich durch die automatsiche Generierung von SVG nie die kompletten Abmessung für die Angabe height und width weiss. Ich habe schon versucht die Angaben mit * zu ersetzen, jedoch wird dann die HTML-Grafik nicht angezeigt. Gibt es vielleicht eine Löscung für mein Problem.
Mfg
Stefan Richter
Hallo,
ich habe ein kleines Problem. Ich generiere mit Cocoon aus XML einen SVG-Baum und binde die Grafik dann in HTML mit <embed name="figure" height="400" width="700" type="image/svg" src="exporttree.svg"> ein.
type="image/svg+xml"
Das funktioniert auch alles, jedoch habe ich das Problem, dass ich durch die automatsiche Generierung von SVG nie die kompletten Abmessung für die Angabe height und width weiss. Ich habe schon versucht die Angaben mit * zu ersetzen, jedoch wird dann die HTML-Grafik nicht angezeigt.
Wenn die SVG-Dimensionen nicht bekannt sind, dann empfiehlt sich die Verwendung prozentualer Werte innerhalb der Grafik. Somit sollten sich die Objekte an die Groeße der Ausgabeflaeche anpassen koennen.
Ansonsten kann man versuchen, nach dem Laden der Grafik mittels JavaScript Informationen zu bekommen und diese dann auf height und width des eingebundenen Objektes anwenden. Am einfachsten waere es, wenn fuer das Wurzelelement svg die Attribute width bzw. height definiert wurden.
MfG, Thomas
Hallo Thomas,
ich danke Dir für Deine Antwort. Das setzen der Attribute height und width mittels JavaScript bze. ECMAScript habe ich schon versucht. Jedoch habe ich Probleme mit XSLT, da ich keine Variablen definieren kann, deren Wert sich ständig ändern. xsl:variable kann ich immer nur ein Wert zuweisen. Da ich aber das Template rekursiv aufrufe, kann ich keinen Berechnung durchführen.
Gibt es denn eigentlich noch eine andere Möglichkeit, svg in HTML einzubinden?
Mfg, Stefan
Hallo,
Jedoch habe ich Probleme mit XSLT, da ich keine Variablen definieren kann, deren Wert sich ständig ändern. xsl:variable kann ich immer nur ein Wert zuweisen. Da ich aber das Template rekursiv aufrufe, kann ich keinen Berechnung durchführen.
Versuche es rekursiv ueber xsl:call-template in Verbindung mit xsl:param und xsl:with-param. Ein Beispiel liegt hier http://forum.de.selfhtml.org/archiv/2003/7/53007/#m293032.
Gibt es denn eigentlich noch eine andere Möglichkeit, svg in HTML einzubinden?
iframe und object
oder der Adobe-Weg, im IE eine Art Inline-SVG zu verwenden:
<html xmlns:iSVG="http://www.w3.org/2000/svg">
<head>
<title>Inline-SVG-Test by TM 07/02</title>
<object id="AdobeSVG" classid="clsid:78156a80-c6a1-4bbf-8e6a-3cd390eeb4e2"></object>
<?import namespace="iSVG" implementation="#AdobeSVG"?>
</head>
<body>
<iSVG:svg width="600" height="300">
<iSVG:rect x="100" y="100" width="200" height="100" style="fill: #00C;"/>
<iSVG:circle cx="200" cy="200" r="50" style="fill: #F00;"/>
</iSVG:svg>
</body>
</html>
Das ist aber nicht fuer den Web-Einsatz empfehlenswert, aber bei CHM-Online-Hilfen der Weg zum Einbinden von SVG.
MfG, Thomas