On Tuesday 10 October 2006 19:24, Vines, John (Civ, ARL/CISD) wrote: # I'm having a bit of an issue understanding how to create an # entity . My understanding is to create an instance of a document and # use the "createEntityReference(name)" method to create the entity. # from xml.dom import getDOMImplementation # # impl = getDOMImplementation() # doctype = impl.createDocumentType( 'Xdmf', None, 'Xdmf.dtd' ) # self.xml_doc = impl.createDocument(None, "Xdmf", doctype) # self.root = self.xml_doc.documentElement # self.xml_doc.appendChild( self.root )
On my system, getDOMImplementation returns the minidom implementation: Python 2.4.2 (#2, Nov 20 2005, 17:04:48) [GCC 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from xml.dom import getDOMImplementation >>> impl = getDOMImplementation() >>> impl <xml.dom.minidom.DOMImplementation instance at 0xb7cf4d8c> Which does not appear to have a createEntityReference() method: >>> doc = impl.createDocument(None, 'a', None) >>> [k for k in dir(doc) if k.startswith('create')] ['createAttribute', 'createAttributeNS', 'createCDATASection', 'createComment', 'createDocumentFragment', 'createElement', 'createElementNS', 'createProcessingInstruction', 'createTextNode'] The 4DOM implementation, however, does have such a method: >>> newImpl = getDOMImplementation('4DOM') >>> newImpl <xml.dom.DOMImplementation.DOMImplementation instance at 0xb7cf4f4c> >>> doc = newImpl.createDocument(None, 'a', None) >>> hasattr(doc, 'createEntityReference') True Which you use as one might expect: >>> lt = doc.createEntityReference('lt') >>> doc.documentElement.appendChild(lt) <EntityReference Node at -482df7b4: 'lt'> >>> from xml.dom.ext import Print # 4DOM does not have a toxml() method >>> from StringIO import StringIO >>> buf = StringIO() >>> Print(doc, buf) >>> buf.seek(0) >>> print buf.read() <?xml version='1.0' encoding='UTF-8'?><a><</a> Another DOM implementation that you might be interested in is pxdom: http://www.doxdesk.com/software/py/pxdom.html All these DOM implementations have their strengths and weaknesses. Hope that helped, --anjansamanta _______________________________________________ XML-SIG maillist - XML-SIG@python.org http://mail.python.org/mailman/listinfo/xml-sig