[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
XSLT, Namespaces & SVG
Subject: XSLT, Namespaces & SVG From: "Kane, David" <David_Kane@xxxxxxx> Date: Mon, 4 Dec 2000 09:15:16 -0500 |
Folks, I have been trying to write XSLT stylesheets to transform SVG documents, and I have encountered some challenges regarding SVG's use of namespaces. SVG (or at least the implementation I am working with) appears to specify a default namespace using a parameter entity in the DTD. When I define an namespace for the svg prefix in my stylesheet, Xalan never appears to be able to match any nodes by name from the SVG document. The default namespace is defined dynamically in the SVG DTD, and that may be causing part of the problem, or it may be that Xalan's mechanism for binding the a namespace dynamically is not functioning correctly. I found a workaround by stripping the namespace reference using the local-name() function, but even here, the namespace parameter entity is not correctly resolved.. I tested this particular solution with Saxon, and there it appeared to work correctly. The following is a representative example of the problem. I have a simple SVG document, and a stylesheet that adds some tags and removes some attributes from the existing document. I'm using Xalan 1.2.1 and Saxon 5.5.1 as my XLST processors. The SVG document is adapted from one generated from Adobe Illustrator 9.0. Am I missing something about how SVG should operate with XSLT? Is this a flaw in one (or both) of the specifications, or one of the implementations? Thanks! Sincerely, David Kane *************************** SVG DOCUMENT *************************** <?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN" "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd" [ <!ENTITY st11 "fill-rule:evenodd;clip-rule:evenodd;fill:none;stroke-width:4;stroke-linecap :square;"> <!ENTITY st28 "font-family:'Helvetica';"> <!ENTITY st33 "font-size:18;"> <!ENTITY st38 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> ]> <svg id="nsexample" width="100pt" height="100pt" viewBox="0 0 100 100" xml:space="preserve"> <g id="layer1" style="&st38; &st28; &st33;"> <path style="&st11;" d="M43,44.196h2280v1452H43v-1452z"/> </g> <g id="layer2" style="&st38; &st28; &st33;"> <path style="&st11;" d="M23,24.196h2280v1452H43v-1452z"/> </g> </svg> *************************** XLST STYLESHEET *************************** <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg-20000303-stylable" xmlns="http://www.w3.org/2000/svg-20000303-stylable" version="1.0"> <xsl:output method="xml" media-type="text/xml" omit-xml-declaration="no" doctype-system="http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-2000030 3-stylable.dtd" doctype-public="-//W3C//DTD SVG 20000303 Stylable//EN"/> indent="yes"/> <!-- Workaround that appears to work in Xalan <xsl:template match="*[local-name()='path']"> --> <xsl:template match="svg:path"> <addTag> <xsl:copy> <xsl:apply-templates select="*|processing-instruction()|text()"/> </xsl:copy> </addTag> </xsl:template> <xsl:template match="*[local-name()!='path']"> <xsl:copy> <xsl:apply-templates select="*|processing-instruction()|text()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> *************************** RESULTING DOCUMENT *************************** <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN" "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd" > <!-- Note that the namespace parameter entity is not resolved. --> <svg xmlns="%SVGNamespace;"> <g> <addTag><path/></addTag> </g> <g> <addTag><path/></addTag> </g> </svg> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Finding namespace definitions (, Jeni Tennison | Thread | Re: XSLT, Namespaces & SVG, David Carlisle |
Re: Finding namespace definitions (, Dimitre Novatchev | Date | Re: Transforming an incorrectly str, Wendell Piez |
Month |