I am using org.apache.xerces.dom.DocumentImpl to try and build a DOM to
generate an XML document which does not use a System or Public ID but
instead has the following structure:

<!DOCTYPE CATALOG_REQUEST [   
<!ELEMENT CATALOG_REQUEST (CONFIG, UPDATEDATE+)> 
   ...more stuff here...
]> 
<CATALOG_REQUEST>       
<CONFIG MERCHANTID="123" />     
<UPDATEDATE TRANSID="abcd" YEAR="2000" MONTH="08" DAY="01"/> 
</CATALOG_REQUEST>


I am trying to generate the DOM using the following code:

        DocumentTypeImpl docType = (DocumentTypeImpl)
imp.createDocumentType("CATALOG_REQUEST",  null ,null);
        docType.setInternalSubset(theWholeDtdAsAString);
        Document doc = imp.createDocument(null, "CATALOG_REQUEST" ,
docType);

The problem is when I use
org.apache.xml.serialize.XMLSerializer.serialize(Document);

I get a <?xml version="1.0"?> instruction inserted between the DTD text and
the XML text. And then if I parse the serialized file I get:
 
org.xml.sax.SAXParseException: The XML declaration may only appear at the
very beginning of the document

suggestions? 
                

Reply via email to