[jdom-interest] SAXOutputter seems to be ignoring namespace
Dinkar Ganti
dinkarg at lifeconnect.com
Fri Aug 17 11:10:45 PDT 2001
Hello,
This may be a known issue or maybe I am doing something wrong. I generate an
SVG document and use JDOM for generating the XML. When I use XMLOutputter in
a stand-alone application, the browser is able to read the SVG document
properly. However, when I am running the application through Cocoon, the
browser complains "SVG root element in unknown namespace. No image drawn"
Snippet of the html source ...
<svg stroke-dasharray="none" shape-rendering="auto" font-family="'Arial'"
text-rendering="auto" fill-opacity="1" contentScriptType.....
>
Is this a SAXOutputter or a Cocoon issue?
Thanks,
Dinkar
import java.awt.Rectangle;
import java.awt.Graphics2D;
import java.awt.Color;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.IOException;
import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.batik.dom.GenericDOMImplementation;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DOMImplementation;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.DOMBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.output.SAXOutputter;
import org.xml.sax.ContentHandler;
public class SVGTest {
public void paint(Graphics2D g2d) {
g2d.setPaint(Color.red);
g2d.fill(new Rectangle(10, 10, 100, 100));
}
public static void main(String [] args) throws IOException {
// Get a DOMImplementation
DOMImplementation domImpl =
GenericDOMImplementation.getDOMImplementation();
// Create an instance of org.w3c.dom.Document
org.w3c.dom.Document document = domImpl.createDocument(null, "svg",
null);
// Create an instance of the SVG Generator
SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
// Ask the test to render into the SVG Graphics2D implementation
SVGTest test = new SVGTest();
test.paint(svgGenerator);
// Finally, stream out SVG to the standard output using UTF-8
// character to byte encoding
// boolean useCSS = true; // we want to use CSS style attribute
//Writer out = new OutputStreamWriter(System.out, "UTF-8");
//svgGenerator.stream(out, useCSS);
org.w3c.dom.Element svgRoot = svgGenerator.getRoot();
Namespace ns = Namespace.getNamespace("svg",
SVGDOMImplementation.SVG_NAMESPACE_URI );
DOMBuilder builder = new DOMBuilder();
XMLOutputter outputter = new XMLOutputter();
document.removeChild(document.getDocumentElement());
document.appendChild(svgRoot);
org.jdom.Document jdomDocument = builder.build(document);
org.jdom.Element rootJDOMElement = jdomDocument.getRootElement();
rootJDOMElement.setAttribute("svg","svg", ns);
outputter.output(jdomDocument, System.out);
//outputter.output(builder.build(svgGenerator.getRoot()), System.out);
}
}
More information about the jdom-interest
mailing list