[XML-SIG] need help: Sax can't read w3 dtds?

Andrew Clover and-xml at doxdesk.com
Fri Aug 6 15:44:21 CEST 2004


Mike Brown <mike at skew.org> wrote:

>>   <!ENTITY lt "&#38;&#60;" ><!-- less-than sign, U+003C ISOnum -->

> That's not an error.

It *is* an error, regardless of your opinion of whether XML technically 
allows "&#38;&#60;" as a literal entity value(*). XML 1.0 SE 4.6 says:

   If the entities lt or amp are declared, they must be declared as
   internal entities whose replacement text is a character reference to
   the respective character (less-than sign or ampersand) being escaped

The entity value "&#38;&#60;" yields replacement text "&<" which clearly 
is not a character reference to the less-than sign.

This is acknowledged and fixed in m12n SE:

   http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218/
   dtd_module_defs.html#a_module_XHTML_Special_Characters

   <!ENTITY lt "&#38;#60;" ><!-- less-than sign, U+003C ISOnum -->


* - IMO such a replacement text technically allowable by implication of 
XML 1.0 SE 2.3:

   Although the EntityValue production allows the definition of an entity
   consisting of a single explicit < in the literal (e.g., <!ENTITY mylt
   "<">), it is strongly advised to avoid this practice since any
   reference to that entity will cause a well-formedness error.

but it's incompatible with tools like DOM which require the replacement 
text to be parsed as-is without an explicit entity reference, to form 
the content of the Entity node.

-- 
Andrew Clover
mailto:and at doxdesk.com
http://www.doxdesk.com/


More information about the XML-SIG mailing list