- From: Henry S. Thompson <ht@inf.ed.ac.uk>
- Date: Fri, 24 Aug 2007 14:54:07 +0100
- To: public-xml-processing-model-wg <public-xml-processing-model-wg@w3.org>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Today's discussion has raised the, for me at least, deep question of
just what the types we have been semi-formally associating with step
options really mean. One way of framing this was suggested by Norm:
Are
<p:option name='attribute-name' value='x:foo'>...</p:option>
and
<p:option name='attribute-name' select="'x:foo'">...</p:option>
indistinguishable, regardless of what, if anything, replaces the
ellipses?
Or, supposing I'm using W3C XML Schema 1.1, would I be wrong to write
a local element declaration for p:option inside p:add-attribute which
assigned itself the following type in case name=='attribute-name':
<xs:complexType>
. . .
<xs:attribute name="value" type="xs:QName"/>
. . .
</xs:complexType>
?
I realised I had assumed the latter was OK, but our discussion today
forced me to conclude that a) I'm in the minority and b) for it to be
OK implies that the two alternatives at the beginning are _not_
equivalent (and that we might as well bar p:namespaces from inside
p:option[@value]).
I guess I can live with this, but the spec. has to change to make
clear that what is now described as the in-scope namespaces of the
XPath dynamic context is available for _all_ option evaluation, and
specify what namespace bindings are available for parameter
evaluation. Also, the fact that the prefixes in what we call QNames
are interpreted relative to the in-scope namespaces as we define it
needs to be made clear. I'm concerned about the impact of this on the
spec. from the perspective of the 99%-case user, who only uses 'value'
to set options and parameters, and wants to think of QName values as
just-like-element-name QNames.
OK, so having got that off my chest, where does this leave us with
respect to a coherent proposal for adding type information to at least
options?
I propose that we add a 'type' attribute to p:option and p:parameter,
and a 'type-prefixes' attribute to p:pipeline and p:pipeline-library,
syntax and semantics as follows:
type-prefixes -- a whitespace-delimited list of prefixes, all of
which *must* have in-scope namespace declarations on the spot.
type -- A QName per XML Namespaces 1.1, which *must* have a prefix,
which *must* be in an ancestor's type-prefixes. Interpreted to
produce a URI by concatenating the binding of the type prefix, a '#'
if it doesn't end with one already, and the local-name part. This
URI identifies a type definition.
Implementations *must* recognise and enforce the the types used in
section 7.1 below, namely xs:anyURI, xs:boolean, xs:integer, p:QName,
p:XPath-expression and p:XSLT-match-pattern, in their occurrences on
the built-in step definitions from that section. Implementations
*may* recognise and enforce these or any other types in user- or
implementation-specified step definitions. It is
implementation-determined how type URIs other than those used in
section 7.1 are used to establish conditions for type-validity.
For xs:anyURI, xs:boolean and xs:integer, the conditions for
type-validity are as given in W3C XML Schema 1.0 Part 2, Datatypes.
For p:QName, the conditions for type-validity are as given in W3C XML
Schema 1.0 Part 2, Datatypes for xs:QName, with the in-scope
namespaces being determined per 5.7.3, Option and Parameter
Namespaces. For p:XPath-expression and p:XSLT-match-pattern, . . .
If an option declaration has a type, a processor *may* signal a
dynamic error (xxx) if the conditions on type validity established by
that type are not satisfied by a value specified or computed for a
specific binding of that option. Processors *must* signal errors
with respect to option types specified in section 7.1.
In a parameter binding has a type specified, a processor *may* signal
a dynamic error (xxx) if the conditions on type validity established
by that type are not satisfied by the value specified or computed by
that binding.
In an option declaration has type and a default value specified, a
processor *may* signal a static error (xxx) if the conditions on type
validity established by that type are not satisfied by the default
value.
- --
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
Half-time member of W3C Team
2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/
[mail really from me _always_ has this .sig -- mail without it is forged spam]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
iD8DBQFGzuL/kjnJixAXWBoRAtwCAJ4kG62opQdfUTeDMeAoo7csZOqvKwCcCeEZ
EK3BYrqgDArgFdAYIiSJCo8=
=qhLl
-----END PGP SIGNATURE-----
Received on Friday, 24 August 2007 13:54:16 UTC