Errata E57

The new third edition of XML inspired me to read through the latest 
errata. I have a problem with one of them that I think is a 
substantial and unnecessary change to the definition of XML.

E57 states:

Amend the first paragraph after the example declarations so that it reads:

         The value "default" signals that applications' default 
white-space processing modes are acceptable for this element; the 
value "preserve" indicates the intent that applications preserve all 
the white space. This declared intent is considered to apply to all 
elements within the content of the element where it is specified, 
unless [E13]overridden with another instance of the xml:space 
attribute. This specification does not give meaning to any value of 
xml:space other than "default" and "preserve". It is an error for 
other values to be specified; the XML processor MAY report the error 
or MAY recover by ignoring the attribute specification or by 
reporting the (erroneous) value to the application. Applications may 
ignore or reject erroneous values.

Rationale
     Although the required behavior was clear when validating, it was 
under-specified when not validating. Making it an "error" makes it 
clear that "default" and "preserve" are the only blessed values, but 
that processors and applications are not obligated to react 
drastically.

I disagree with allowing nonvalidating processors to signal any form 
of error when encountering xml:space="something else". I think the 
previous spec was quite clear that this was not allowed, and that 
should not be changed now. Furthermore, in practice, these "maybe 
fatal, maybe not" errors are a huge pain in the posterior. They are a 
major source of interoperability problems between parsers. They were 
a mistake in the first place, and I really, really don't want to see 
any new ones blessed in the spec.

With regard to validating processors, the original spec is less 
clear. It states:

A special attribute named xml:space may be attached to an element to 
signal an intention that in that element, white space should be 
preserved by applications. In valid documents, this attribute, like 
any other, must be declared if it is used. When declared, it must be 
given as an enumerated type whose values are one or both of "default" 
and "preserve". For example:

A lot depends on the interpretation of "must" in the last sentence. 
In particular, is it a general rule for all declarations are does it 
just apply "In valid documents" as in the previous sentence. I prefer 
the latter interpretation, which would make it a validity error 
rather than a fatal error. Either way though, provided the attribute 
is properly declared in the DTD as specified here, I think it is 
still well-formed (though not valid) to have xml:space="something 
else" in a document parsed by a validating parser. I don't think this 
should be changed now.

One final meta-note: I really wish these errata would be publicly 
discussed and debated before being snuck out the door in the dead of 
night.
-- 

   Elliotte Rusty Harold
   elharo@metalab.unc.edu
   Effective XML (Addison-Wesley, 2003)
   http://www.cafeconleche.org/books/effectivexml
   http://www.amazon.com/exec/obidos/ISBN%3D0321150406/ref%3Dnosim/cafeaulaitA

Received on Saturday, 1 November 2003 09:08:13 UTC