[XML-SIG] (Py)DOM: Character References

Carsten Oberscheid co@daisybytes.su.uunet.de
Thu, 18 Mar 1999 15:13:03 +0100


------ =_NextPart_000_01BE7151.D30396B0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hi all,

I applied a little patch to xml.dom.writer.XmlWriter to have it replace 
non-ASCII characters by character references. To make this optional I've added 
a flag doCharRef to the class.

Additionally my version of XmlWriter takes care of doublequotes in attribute 
values, by changing the attribute value delimiters to single quotes if 
necessary.

The charref replacement is done by the new function xml.utils.escape2() (it's 
in xml/utils/__init__.py, sorry for the silly name...).

I send the sources along, just in case someone finds this useful.

Can anybody tell why character references are not modeled explicitely in the 
DOM? In XML they have their own identity, explicitely distinct from entity 
references. Just wondering...

Regards

.co.

+------------------------------------------------------- daisy bytes! --------+
 Carsten Oberscheid
 co@daisybytes.su.uunet.de                        digital document processing
 http://www.pweb.de/daisybytes.su                     electronic publishing

 
------ =_NextPart_000_01BE7151.D30396B0
Content-Type: application/x-zip-compressed; name="charrefs.zip"
Content-Transfer-Encoding: base64

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

------ =_NextPart_000_01BE7151.D30396B0--