This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
Reading the draft of 2012-10-02, section 6, first two bullets, we read (my numbering): (1) If (1x) an element node that has no child nodes is recognized as an HTML element, and (1a) the html-version serialization parameter is absent or has a value less than 5.0, and the content model of the HTML element is not EMPTY (for example, an empty title or paragraph); or (1b) the value of the html-version serialization parameter is 5.0, and the HTML element is not a void element, (1c) the serializer MUST NOT use the minimized form. That is, it MUST output <p></p> and not <p />. (2) If (2x) an element that has no children is recognized as an HTML element, and (2a) the html-version serialization parameter is absent or has a value less than 5.0, and the content model of the HTML element is EMPTY (for example, an empty title or paragraph); or (2b) the value of the html-version serialization parameter is 5.0, and the HTML element is not a void element, (2c) the serializer MUST use the minimized tag syntax, for example <br /> After much staring at this, I think that (A) in (2b), "is not a void element" should read "is a void element" (B) in (2a), the example should refer to say hr and img rather than to title and paragraph. I think the rules would be easier to read with some refactoring. I would suggest: [Definition] An element is *always-empty* if either (a) the html-version serialization parameter is absent or has a value less than 5.0 and the content model is EMPTY (that is, it is one of the elements "area", "base", "basefont", "br", "col", "embed", "frame", "hr", "img", "input", "isindex", "link", "meta", "param"), or (b) the html-version serialization parameter has the value 5.0 and the element is a void element in HTML5, that is it is one of "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" If an element node that has no child nodes is recognized as an HTML element then: (a) if the element is *always-empty* then the serializer MUST use the minimized tag syntax (for example it must use <br />), and if the html-version serialization parameter is absent or has a value less than 5.0, it MUST include a space before the trailing />, e.g. <br />, <hr /> and <img src="karen.jpg" alt="Karen" />. (b) otherwise (the element is not *always-empty*), the serializer MUST NOT use the minimized tag syntax (for example it must use <p></p>) This leaves the serializer to its own discretion for elements not recognized as HTML elements, and perhaps the rule should say this explicitly.
I agree. Thank you for pointing out my mistakes and the suggestion for improved wording.
Michael, at their joint teleconference of 18 December 2012,[1] the XSLT and XQuery working groups agreed with your assessment that (A) in (2b), "is not a void element" should read "is a void element" (B) in (2a), the example should refer to say hr and img rather than to title and paragraph. They also agreed that some editorial rewording along the lines you recommended was in order. I will apply the substantive corrections for the next public working draft, and the editorial corrections in the working draft that will follow that one. As you were present when these decisions were made, I will mark the bug as closed. [1] https://lists.w3.org/Archives/Member/w3c-xsl-query/2012Dec/0054.html (Member-only link)
Michael, I have applied some editorial changes for this bug to section 6 of the latest internal working draft of Serialization.[2] I would be grateful if you could take a look at the changes to see whether they are satisfactory. [2] https://www.w3.org/XML/Group/qtspecs/specifications/xslt-xquery-serialization-30/html/Overview.html#xhtml-output
Yes, this looks fine. Thanks.