Hallo,
ich transformiere derzeit XML mit einer XSLT-Transfomation in SVG und habe dabei folgendes Problem bzw. Frage:
Ist es möglich ein XSLT-Stylesheet zu erzeugen, das 2 DTD's auf ein SVG Dokument angewendet werden?
Du kannst immer nur eine DTD verwenden. (die internete Untermenge ist keine 2. DTD)
Im XSLT-Stylesheet deklariere ich im xsl:output doctype-public und doctype-system. Allerdings kann man keine weiteren DTD's angeben.
In SVG ist es dies möglich, indem man in die neuen Attribute zum Beispiel wie folgt anfügt und den Namensraum im svg-Element deklariert:
<!DOCTYPE svg
PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd"
[<!ATTLIST svg
xmlns:attrib CDATA #IMPLIED]>
So sollte das SVG durch XSLT erzeugt werden, was mir bis jetzt noch nicht gelungen ist.
Das ginge nur z.B. so:
<xsl:output method="xml" indent="yes" encoding="iso-8859-1" />
<xsl:template match="/">
<xsl:text disable-output-escaping="yes">
<![CDATA[
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd"
[<!ATTLIST svg
xmlns:attrib CDATA #IMPLIED
>
]>
]]>
</xsl:text>
<!-- aber hier dann den Rest mit <svg> ... erzeugen -->
</xsl:template>
Oder ohne "disable-output-escaping" und CDATA, dann musst du zumindest die < als < notieren.
Grüße
Thomas