This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 5458 - [SER] indentation with xml output method
Summary: [SER] indentation with xml output method
Status: CLOSED FIXED
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: Serialization 1.0 (show other bugs)
Version: Recommendation
Hardware: PC Windows NT
: P2 normal
Target Milestone: ---
Assignee: Henry Zongaro
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-07 13:42 UTC by Tim Mills
Modified: 2008-04-10 15:20 UTC (History)
0 users

See Also:


Attachments

Description Tim Mills 2008-02-07 13:42:00 UTC
Given the statement

"Whitespace characters SHOULD NOT be added in places where the characters would constitute significant whitespace, for example, in the content of an element whose content model is known to be mixed."

when serializing the result of an XQuery, does this mean that an implementation SHOULD NOT add any whitespace unless the elements are known to have  element-only content models, or simple content with the "whiteSpace" facet set to "collapse"?  

Specifically, if an XQuery produces an untyped document, since xs:untyped is mixed, does this mean that an implementation SHOULD NOT perform any indentation?
Comment 1 Michael Kay 2008-02-07 14:00:36 UTC
>or simple content with the "whiteSpace" facet set to "collapse"?

You're not allowed to add whitespace to elements with a simple content model under rule 2: Whitespace characters MUST NOT be added other than adjacent to an element node, that is, immediately before a start tag or immediately after an end tag.

I think it's reasonable to interpret "whose content model is known to be mixed" as meaning that there is a known content model and it is explicitly mixed; the word "known" must mean something, and my interpretation is "not xs:untyped and not xs:anyType". 
Comment 2 Tim Mills 2008-02-07 14:11:01 UTC
Thanks Mike.  So under your interpretation, a serialization of a query such as

<mixed-text-and-elements>
  <element />
  <element />
  <element />
  <element />
  <element />text<element />
</mixed-text-and-elements>

could be indented as above, even though mixed-text-and-elements mixes text and elements?
Comment 3 Michael Kay 2008-02-07 14:30:03 UTC
Yes. The actual Saxon output is:

<mixed-text-and-elements>
   <element/>
   <element/>
   <element/>
   <element/>
   <element/>text<element/>
</mixed-text-and-elements>
Comment 4 Henry Zongaro 2008-02-07 15:37:22 UTC
I believe Mike's interpretation in comment #1 was the intended interpretation.  The particular statement Tim quotes in comment #0 was first introduced in response to public comment qt-2004Feb0930-01.  See [1] for the comment and the official response.  I think some clarification of the text is in order.

[1] http://lists.w3.org/Archives/Public/public-qt-comments/2004Sep/0004.html
Comment 5 Henry Zongaro 2008-03-11 17:29:00 UTC
At the joint teleconference of 2008-03-11, the working groups discussed a general approach to resolving this issue in which an element would be subject to indentation if it is annotated with a user-defined type (neither xs:untyped nor xs:anyType); that would be in accordance with the response to qt-2004Feb0930-01.  To ensure the type annotation is preserved, the sequence normalization process described in section 2 of the Serialization Recommendation needs to make it explicit that type annotations are preserved.

I would like to propose the following changes to Serialization:

1. In the third paragraph of section 2, after the first sentence, add "Where a step in the sequence normalization process indicates that a node should be copied, the copy is performed in the same way as an XSLT xsl:copy-of instruction that has a validation attribute whose value is preserve and has a select attribute whose effective value is the node, as described in Section 11.9.2 "Deep Copy" of XSLT 2.0, or equivalently in the same way as an XQuery content expression as described in Step 1e of Section 3.7.1.3 "Content" of XQuery 1.0, where the construction mode is preserve." (with appropriate cross-document links to the relevant sections of XSLT and XQuery and to the definitions of "content expression" and "construction mode".)

2. In the Note in Section 2, in the first example box add the attribute  "validation='preserve'" to both the xsl:document and xsl:copy-of instructions, and in the second example box add the declaration "declare construction preserve;" to the start of the example.

3. In Section 5.1.3, in the fourth item in the bulleted list, change "in the content of an element whose content model is known to be mixed" to "in the content of an element that is annotated with a type other than xs:untyped or xs:anyType, and whose content model is mixed."
Comment 6 Henry Zongaro 2008-03-13 19:11:04 UTC
At its teleconference of 2008-03-13,[2] the XSL WG approved the response
proposed in comment #5.  This now needs the approval of the XQuery WG.

[2] http://lists.w3.org/Archives/Member/w3c-xsl-wg/2008Mar/0015.html
(Members-only link)
Comment 7 Henry Zongaro 2008-03-20 13:33:02 UTC
At joint teleconference 360 of the XSL and XQuery working groups on 2008-03-18,[3] the XQuery WG concurred with the decision of the XSL WG.

Tim Mills, I trust you will find this response satisfactory.

Henry Zongaro, on behalf of the XSL and XQuery working groups

[3] http://lists.w3.org/Archives/Member/w3c-xml-query-wg/2008Mar/0059.html (Members-only link)
Comment 8 Henry Zongaro 2008-03-31 13:51:12 UTC
This will be published as Serialization erratum SE.E6.
Comment 9 Tim Mills 2008-04-10 15:20:50 UTC
Great.  Thanks.