Commit | Line | Data |
---|---|---|
cb67d09c FT |
1 | package dolda.jsvc.next; |
2 | ||
3 | import java.io.*; | |
4 | import org.w3c.dom.*; | |
5 | ||
6 | public class HtmlWriter extends XHtmlWriter { | |
7 | public HtmlWriter(Document doc) { | |
8 | super(doc); | |
9 | } | |
10 | ||
11 | protected boolean asempty(ColumnWriter out, Element el) { | |
12 | if(!super.asempty(out, el)) | |
13 | return(false); | |
14 | String n = el.getTagName(); | |
15 | if(n.equals("br") || n.equals("hr") || n.equals("img") || | |
16 | n.equals("input")) | |
17 | return(true); | |
18 | return(false); | |
19 | } | |
20 | ||
21 | protected void attribute(ColumnWriter out, Attr attr, int indent) throws IOException { | |
22 | if(attr.getNamespaceURI() != null) | |
23 | throw(new RuntimeException("HTML does not support non-null-NS attributes (" + attr.getNamespaceURI() + " encountered)")); | |
24 | super.attribute(out, attr, indent); | |
25 | } | |
26 | ||
27 | protected void element(ColumnWriter out, Element el, int indent) throws IOException { | |
28 | if(!el.getNamespaceURI().equals(Html.ns)) | |
29 | throw(new RuntimeException("HTML does not support non-HTML elements (namespace " + el.getNamespaceURI() + " encountered)")); | |
30 | super.element(out, el, indent); | |
31 | } | |
32 | ||
33 | public void write(Writer out) throws IOException { | |
34 | DocumentType dt = doc.getDoctype(); | |
35 | if(dt == null) | |
36 | throw(new RuntimeException("Writing HTML requires an HTML document")); | |
37 | if(!dt.getName().equals("html")) | |
38 | throw(new RuntimeException("Writing HTML requires an HTML document, not `" + dt.getName() + "'")); | |
39 | String pubid = dt.getPublicId(); | |
40 | if(pubid.equals("-//W3C//DTD XHTML 1.1//EN")) { | |
41 | } else { | |
42 | throw(new RuntimeException("Unimplemented HTML doctype `" + pubid)); | |
43 | } | |
44 | super.write(out); | |
45 | } | |
46 | } |