summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/Unparser.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2010-10-10 23:20:14 +0200
committerDavid A. Madore <david+git@madore.org>2010-10-10 23:20:14 +0200
commita9d7361ee110a79e29d849a4c7876a2738c509fe (patch)
tree382e1f803d1a3b6440f7d1dbee421d7a96c7c656 /org/madore/damlengine/Unparser.java
parent3d574c5090212ad271e1878719b4704a0466d2c5 (diff)
downloaddamlengine-a9d7361ee110a79e29d849a4c7876a2738c509fe.tar.gz
damlengine-a9d7361ee110a79e29d849a4c7876a2738c509fe.tar.bz2
damlengine-a9d7361ee110a79e29d849a4c7876a2738c509fe.zip
Allow doctype overriding in unparser.
Diffstat (limited to 'org/madore/damlengine/Unparser.java')
-rw-r--r--org/madore/damlengine/Unparser.java32
1 files changed, 19 insertions, 13 deletions
diff --git a/org/madore/damlengine/Unparser.java b/org/madore/damlengine/Unparser.java
index 82ff9e1..0eeec00 100644
--- a/org/madore/damlengine/Unparser.java
+++ b/org/madore/damlengine/Unparser.java
@@ -11,10 +11,12 @@ public final class Unparser {
private enum Dir { PUSHING, POPPING }
private Dir dir;
private final Writer out;
+ private final String forceDoctype;
- public Unparser(Document doc, Writer out) {
+ public Unparser(Document doc, Writer out, String forceDoctype) {
this.doc = doc;
this.out = out;
+ this.forceDoctype = forceDoctype;
}
protected void enter() {
@@ -126,18 +128,22 @@ public final class Unparser {
public void unparse()
throws IOException {
out.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
- DocumentType doctype = doc.getDoctype();
- if ( doctype != null ) {
- String externalId = "";
- if ( doctype.getPublicId() != null ) {
- externalId = " PUBLIC \""+doctype.getPublicId()+"\" \""
- +doctype.getSystemId()+"\"";
- } else if ( doctype.getSystemId() != null ) {
- externalId = " SYSTEM \""+doctype.getSystemId()+"\"";
- }
- out.write("<!DOCTYPE "+doctype.getName()+externalId+">\n");
- } else
- out.write("\n");
+ if ( forceDoctype == null ) {
+ DocumentType doctype = doc.getDoctype();
+ if ( doctype != null ) {
+ String externalId = "";
+ if ( doctype.getPublicId() != null ) {
+ externalId = " PUBLIC \""+doctype.getPublicId()+"\" \""
+ +doctype.getSystemId()+"\"";
+ } else if ( doctype.getSystemId() != null ) {
+ externalId = " SYSTEM \""+doctype.getSystemId()+"\"";
+ }
+ out.write("<!DOCTYPE "+doctype.getName()+externalId+">\n");
+ } else
+ out.write("\n");
+ } else {
+ out.write("<!DOCTYPE "+forceDoctype+">\n");
+ }
cursor = doc.getDocumentElement();
dir = Dir.PUSHING;
while ( cursor != null ) {