2010-02-25 8 views
6

Estoy tratando de incluir una referencia a una DTD en mi documento XML usando minidom.Establecer una DTD usando minidom en python

estoy creando el documento como:

<?xml version="1.0" ?> 
<foo/> 

tengo que conseguir algo como::

<?xml version="1.0" ?> 
<!DOCTYPE something SYSTEM "http://www.path.to.my.dtd.com/my.dtd"> 
<foo/> 

Respuesta

9

La documentación está desactualizada. Usa la fuente, Luke. Lo hago algo como esto.

from xml.dom.minidom import DOMImplementation 

imp = DOMImplementation() 
doctype = imp.createDocumentType(
    qualifiedName='foo', 
    publicId='', 
    systemId='http://www.path.to.my.dtd.com/my.dtd', 
) 
doc = imp.createDocument(None, 'foo', doctype) 
doc.toxml() 

Esto imprime lo siguiente.

<?xml version="1.0" ?><!DOCTYPE foo SYSTEM \'http://www.path.to.my.dtd.com/my.dtd\'><foo/> 

Observe cómo el elemento raíz se crea automáticamente mediante createDocument(). Además, su 'algo' ha sido cambiado a 'foo': el DTD necesita contener el nombre del elemento raíz.

+0

Agradable. ¡Me alegra que hayas encontrado una solución! – smencer

1

Según the Python docs, no hay

doc = Document() 
foo = doc.createElement('foo') 
doc.appendChild(foo) 
doc.toxml() 

Esto me da implementación de la interfaz DocumentType en el minidom.

Cuestiones relacionadas