[XML-SIG] Setting the DOCTYPE in a new XML DOM

Douglas Bates bates@stat.wisc.edu
11 Jan 2002 17:30:59 -0600

System: Debian 3.0 (testing) GNU/Linux with the python2.2 and
  python2.2-xml packages installed.

||/ Name           Version        Description
ii  python2.2      2.2-2          An interactive object-oriented scripting la
ii  python2.2-xml  0.6.6-7        XML tools for Python (2.2.x)

I have been unable to determine how to set the SYSTEM in the doctype
of a document read by the PyExpat reader.  I am rather new to this so
it is possible that I am doing something foolish.  I have mostly been
following demo's and examples as I haven't been able to track down a
lot of documentation.  A sample program is

#!/usr/bin/env python2.2

from xml.dom.ext.reader.PyExpat import Reader
from xml.dom.ext import PrettyPrint

if __name__ == "__main__":
    reader = Reader()
    doc = reader.fromUri("/tmp/foo1.xml")

The file /tmp/foo1.xml begins

<?xml version="1.0"?>
<!DOCTYPE booklist SYSTEM "file:////home/deepayan/python/book.dtd">

but the output file begins

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE booklist>

Can anyone tell me what I do to maintain the SYSTEM designation?

Also, how do I set the SYSTEM designation when I create a new
document, say as in

    def __init__(self, dom = None):
        '''Initialize from an existing document object model
        or create a new DOM.
        if dom:
            self.doc = dom
            self.vol = dom.getElementsByTagName('volume')[0]
            from xml.dom.DOMImplementation import implementation
            self.doc = implementation.createDocument(None, None, None)
            self.vol = self.doc.createElement('volume')