[
Lists Home |
Date Index |
Thread Index
]
At 05:16 PM 5/12/2003 -0500, Bob Foster wrote:
>From: "Jonathan Robie" <jonathan.robie@datadirect-technologies.com>
> > The complex types of DTDs are not named types in the Data Model, and that
> > means that you can't match them with SequenceType in XQuery - there is no
> > type annotation to match.
>
>Hi Jonathan,
>
>Thanks for the answer.
>
>Maybe you're answering a different question. My (limited) understanding of
>the Data Model spec is that the complex types of DTDs would be mapped to
>anonymous types. It seems they must be validated, in order to get at simple
>types like NMTOKENS?
>
>I must be wrong, if there is no type annotation at all.
Hi Bob,
Anonymous types are the types in W3C XML Schema that are not explicitly
given names by users, but which have identity. Every element or attribute
has a type annotation, but if a document is merely well formed, or taken
from a document governed by a DTD, the type annotation will be xs:anyType
for elements or xs:anySimpleType for attributes EXCEPT if it is an
attribute of type ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, or NMTOKENS.
> > If RELAX NG wants to define a mapping into our Data Model, that mapping
> > could produce named types. The XQuery and XSLT Working Groups have not
> > produced a mapping for RELAX NG.
>
>I'm not sure, for complex types, that the named types a mapping could
>produce would be any more useful than anonymous types. Names are not
>typically used in that way in RELAX NG.
>
>There are other, more fundamental issues. RELAX NG validation is
>multi-level, e.g., the contents of elements may need to be examined to
>determine which pattern is valid, and more than one might be. XQuery seems
>to deal with non-determinism using a "first match" rule for both complex and
>simple types. There is not even, in RELAX NG, a well-defined notion of
>"first", as in that language choice represents the commutative union
>operation.
You might be able to use xs:anyType for elements or xs:anySimpleType for
attributes unless a type library is bound in for simple types, and use type
annotations for those types. Obviously, it takes a little time to think
this out for any given schema language. And you would also need to think
about whether importing RELAX NG schemas into the query body is important
to you.
Jonathan
|