在 Batik 中设置 SVG 1.1 文档类型(公共和系统 ID)
使用 Apache Batik (1.14) 时,我试图在 SVG 输出中获取特定的 DOCTYPE 条目。
一个简单的例子如下所示:
DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
String svgNS = "http://www.w3.org/2000/svg";
DocumentType docType = domImpl.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd");
Document document = domImpl.createDocument(svgNS, "svg", docType);
SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(document);
SVGGraphics2D svgGenerator = new SVGGraphics2D(ctx, false);
Writer out = new OutputStreamWriter(System.out, "UTF-8");
svgGenerator.stream(out, true);
产生:
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'
'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
我希望得到更多类似的东西:(
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
基于 https://www.w3.org/TR/SVG11/struct.html#NewDocument)。
我怎样才能获得所需的DOCTYPE(最好不要事后修改XML)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
与其在
DOCTYPE
生成上与 Batik 斗争,只需跳过它即可。正如罗伯特评论,一般都会被忽略。此外,不建议在 SVG 中使用DOCTYPE
:Rather than struggle with Batik over
DOCTYPE
generation, just skip it. As Robert commented, it's generally ignored. Furthermore, using aDOCTYPE
is not recommended with SVG: