Das logische und das physiche an SVG...
Carl Friedrich
- xml-derivat
Hallo,
zuerst einmal die Warnung vorneweg: meine Frage hat nichts mit dem wirklichen Leben zu tun und ist wohl eher akademisch. ;-)
Und zwar:
XML soll ja das Layout von der Struktur der Daten trennen, wie man in vielen Zeitschriften und auch in SelfHTML lesen kann.
Nun frage ich mich, wie das bei SVG ist, denn schließlich wird ja hier das Aussehen der Daten explizit vorgegeben.
Z.B sagt
<rect x="0" y="0" width="10" height="10" fill="blue"/>
ganz genau, wie das Rechteck auszusehen hat, welche Farbe es hat usw.
Müßte es denn nicht so sein, wenn man die Intention von XML beachtet, daß es nur heißt
<rect/>
und man dann anschließend mit XSL das Aussehen bestimmt?
Viel Spaß beim Kopfzerbrechen ;-)
Carl
Hallo,
Und zwar:
XML soll ja das Layout von der Struktur der Daten trennen, wie man in vielen Zeitschriften und auch in SelfHTML lesen kann.
Nun frage ich mich, wie das bei SVG ist, denn schließlich wird ja hier das Aussehen der Daten explizit vorgegeben.
Z.B sagt
<rect x="0" y="0" width="10" height="10" fill="blue"/>
ganz genau, wie das Rechteck auszusehen hat, welche Farbe es hat usw.
Müßte es denn nicht so sein, wenn man die Intention von XML beachtet, daß es nur heißt
<rect/>
In SVG sind die wesentlichen Daten der geometrischen Elementarobjekte in Form von Attributwerten definiert, was IMHO sinnvoll ist, weil es eben die Primaerdaten sind (Vektor-Koordinaten). Auch ist die Verarbeitung von separaten Attributwerten oft komfortabler, z. B. bei der Transformation anderer XML-Daten in SVG-Dokumente (siehe weiter unten).
Die visuelle Praesentation kann zwar auch mittels einiger Attribute beschrieben werden, z. B. fill, aber auch hier ist die Verwendung von CSS moeglich und aus meiner Sicht praktikabler (Klassenkonzept, externe CSS-Dateien, usw).
Ein roter Kreis mit 2px starkem blauem Rand und 50% Deckkraft entsteht dann so:
<circle cx="100" cy="100" r="20" style="fill: #F00; stroke: #00C; stroke-width: 2px; fill-opacity: 0.5"/>
oder
<circle cx="100" cy="100" r="20" class="kreis1"/>
mit
.kreis1
{
fill: #F00;
stroke: #00C;
stroke-width: 2px;
fill-opacity: 0.5;
}
und man dann anschließend mit XSL das Aussehen bestimmt?
Mit XSL kann man das Aussehen von SVG-Dokumenten nicht bestimmen, aber es lassen sich XSL-Transformationsvorlagen schreiben, die -- wie bereits genannt -- XML-Daten als Inhalte von SVG-Elementen bzw. -Attributen ausgeben, siehe http://www.styleassistant.de/tips/tip89.htm.
MfG, Thomas
Hallo Thomas,
und man dann anschließend mit XSL das Aussehen bestimmt?
Mit XSL kann man das Aussehen von SVG-Dokumenten nicht bestimmen,
doch. und genau das sagst du eigentlich auch:
aber es lassen sich XSL-Transformationsvorlagen schreiben, die -- wie bereits genannt -- XML-Daten als Inhalte von SVG-Elementen bzw. -Attributen ausgeben,
genau diese Attribute kannst du mitellst xslt erstellen und dabei auch das aussehen eines svg-"bildes" bestimmen:
http://www.w3.org/TR/SVG/styling.html#StylingWithXSL
grüße
Thomas
ps: es ist nur eine frage der anwendung ob man jetzt xslt oder css nutzt.
Hallo Thomas,
Hallo Thomas2,
und man dann anschließend mit XSL das Aussehen bestimmt?
Mit XSL kann man das Aussehen von SVG-Dokumenten nicht bestimmen,
doch. und genau das sagst du eigentlich auch:
[...]
Ja, soweit schon klar. Das "S" steht ja in CSS und XSL fuer Style bzw. Stylesheet. Es handelt sich aber doch um unterschiedliche Konzepte. Mit XSL kann man eine XML-Struktur in eine andere transformieren und dabei natuerlich auch Praesentationsattribute bestimmen.
Dennoch unterscheide ich in XSL-Transformation als einen Prozess und CSS-Formatvorlage als eine mehr statische Zuweisung von Eigenschaften, die der User-Agent direkt umsetzt.
ps: es ist nur eine frage der anwendung ob man jetzt xslt oder css nutzt.
Durchaus und ich verwende auch bei der dynamischen Generierung von SVG mittels XSLT externe CSS-Dateien.
Ich meinte eher, dass man mit "xsl:elementen" keine direkte Formatierung erreichen kann, sondern erst den Transformationsschritt mittels XSLT-Prozessor gehen muss. Man kann natuerlich auch CSS-Regeln durch eine Transformation definieren. Es findet also eine "Durchdringung" von Technologien statt.
MfG, Thomas
Hallo,
Und zwar:
XML soll ja das Layout von der Struktur der Daten trennen, wie man in vielen Zeitschriften und auch in SelfHTML lesen kann.
ja das tut sie auch.
Nun frage ich mich, wie das bei SVG ist, denn schließlich wird ja hier das Aussehen der Daten explizit vorgegeben.
Z.B sagt
<rect x="0" y="0" width="10" height="10" fill="blue"/>
ganz genau, wie das Rechteck auszusehen hat, welche Farbe es hat usw.
ich sehe dabei das problem nicht. SVG ist ein format für 2 dimensionale grafiken. da es sich um ein grafikformat handelt muss man das "layout" bzw. aussehen bestimmen. SVG tut dies auf eine XML basierende, strukturiere form. siehe z.B. die struktur einer SVG datei an und die regel für gruppierung etc. und mit hilfe der attribute werden ebenfalls strukturen beschrieben: z.B. der verlauf eines pfades.
und wie schon Thomas sagte, man könnte auch beim SCG auf CSS zurückgreifen. Oder ebso mittels xslt das was du Aussehen nennst einer XML/SVG datei hinzufügen.
grüße
Thomas
ps: es ist das selbe wie mit XSL-FO dort wird auch explizit das layout definiert.
Hallo Thomas und Thomas,
danke für die Anregungen.
Carl