W3C home > Mailing lists > Public > public-xml-processing-model-wg@w3.org > August 2007

Option types

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>
Message-ID: <f5b3ay9xclc.fsf@hildegard.inf.ed.ac.uk>

-----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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:21:54 GMT