RE: question regarding element types in function definitions/XQuery

Item also subsumes comment, processing instruction, text etc. xs:anyType
does not.

Best regards
Michael

> -----Original Message-----
> From: Jonathan Robie
[mailto:jonathan.robie@datadirect-technologies.com]
> Sent: Friday, February 21, 2003 8:38 AM
> To: Todd A. Mancini; public-qt-comments@w3.org
> Subject: Re: question regarding element types in function
> definitions/XQuery
> 
> 
> At 11:00 AM 2/21/2003 -0500, Todd A. Mancini wrote:
> 
> >I know this has been answered in one way or another over the past
year
> >or so, but I'm still having trouble understanding the specifications
as
> >the language and semantic specs. don't seem to exactly agree, and the
> >publicly available issue resolution is somewhat unreadable.
> >
> >If I define a function as follows:
> >
> >define function foo($i as element my:elementdef) { 1 }
> >
> >does this raise a static type error if I have not imported a schema
> >defining element my:elementdef ?
> 
> Yes.
> 
> >However, if I define a function as follows:
> >
> >define function foo($i as element my:elementdef of type xs:integer) {
1
> >}
> >
> >does this raise a static type error if I have not imported a schema
> >defining element my:elementdef?
> 
> I believe the documents currently disagree. We are aware of this, and
hope
> to be fixing it in the next drafts.
> 
> My favorite answer is that this is *not* a type error. If you specify
only
> the element name, then the element name should be used to nominate a
type
> based on the schema definition of the element, so if the element name
is
> not found, there is a type error - you can't find the type. But if the
> type
> is given explicitly, then it might be an element in well-formed
content
> that has an explicit type given with xsi:type, so a type error seems
> overly
> restrictive. And you don't need to read the schema to find the type,
the
> declaration is telling you that type.
> 
> Would you like that answer if the WG could be persuaded to agree with
it?
> 
> >Conversely, what if I have defined an
> >element my:elementdef?  Provided xs:integer is a subtype of the type
of
> >the globally defined my:elementdef, is this acceptable?  Or, does
this
> >signature imply that the argument need only have the element name
> >my:elementdef, with a type xs:integer, regardless of the existence of
> >my:elementdef as a global element definition?
> 
> I am beginning to think that the element name is just a name. If no
type
> is
> given explicitly, the element name nominates a type from the in-scope
> schema definitions, or raises a type error if there is no definition
for
> the name.
> 
> So if the name and type are given explicitly, who cares about the
> definition in the schema - this might be an element for or from a
> different
> document, or in a merely well-formed portion of the document, or
whatever.
> 
> >PS: Another difference between the language and semantic
specifications
> >relates to untyped function arguments and function return values.
The
> >language spec has them as xs:anyType whereas the semantic spec has
them
> >as item*.  Although the difference is subtle, I believe that item*
> >matches more values than xs:anyType.  (e.g.  (element foo, attribute
> >bar) matches item* but not xs:anyType, whose value space has all
> >attributes preceding all elements, assuming I'm correctly
interpreting
> >3.2.4 in semantic spec.)
> 
> Subtle indeed. I have been assuming that xs:anyType and item* really
are
> the same.
> 
> Jonathan

Received on Friday, 21 February 2003 12:09:03 UTC