- From: Alex Milowski <alex@milowski.org>
- Date: Wed, 11 Jul 2007 13:14:58 -0700
- To: public-xml-processing-model-wg <public-xml-processing-model-wg@w3.org>
I've considered a number of different ways for an author to declare their
serialization intent within pipelines. We have this set of options:
1. version - The version of XML (i.e. 1.0 or 1.1).
2. encoding - The requested unicode encoding (e.g. "UTF-8").
3. indent - A boolean value for whether or not to indent
the markup (true = ident).
4. cdata-section-elements - A list of CDATA section elements.
5. omit-xml-declaration - A boolean value for whether to omit the XML PI
(true = omit).
6. standalone - The value of the 'standalone' pseudo-attribute
in the XML PI.
7. undeclare-prefixes - A boolean value indicating whether to undeclare
unused prefixes if the version of XML is 1.1
(true = undeclare)
8. normalization-form - The Unicode normalization form to be used.
9. media-type - The media type to be associated with the
serialization.
10. use-charatcter-maps - The character map to use.
11. byte-order-mark - A boolean value indicating whether to use the
byte order mark (true = BOM).
12. escape-uri-attributes - A boolean value indicating whether to escape
known uri attributes (true = escape). This is
only applicable to the 'html' and 'xhtml'
methods.
13. include-content-type - A boolean value indicating whether to include
the content type in the serialization
(applicable to the 'html' and 'xhtml' methods)
(true = include).
I believe adding these options or any way to specify them to p:output isn't
a good choice as there are plenty of contexts where they don't apply.
I also can see some benefit in having serialization control for p:log as well.
As such, I propose we add a "p:serialization" element to allow an author
to declare a set of serialization options and give them a name. For example:
<p:serialization name="myxml" method="xml"
omit-xml-declaration="yes" indent="yes"/>
All the serialization options listed above plus 'method' would be
attributes on p:serialization.
This could occur only in p:pipeline:
<p:pipeline
name? = NCName
type? = QName
ignore-prefixes? = prefix list>
(p:input |
p:output |
p:option |
p:import |
p:declare-step |
p:log |
p:serialization )*,
subpipeline
</p:pipeline>
We then allow p:log and p:output to have an optional 'serialization'
attribute whose name
must match one of the names on the p:serialization elements.
The scope of the p:serialization declaration would be the pipeline document.
If an output is not serialized, the 'serialization' attribute has no
effect. If the output is
serialized, a processor *may* use the serialization options. An
implementation would be
free to provide a way to override these serialization
options--including always overriding
them with a fixed set.
--
--Alex Milowski
"The excellence of grammar as a guide is proportional to the paucity of the
inflexions, i.e. to the degree of analysis effected by the language
considered."
Bertrand Russell in a footnote of Principles of Mathematics
Received on Wednesday, 11 July 2007 20:15:02 UTC