OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] XQuery/XPath 2.0 Data Model - values of union types

[ Lists Home | Date Index | Thread Index ]

Hi Bob,

> A union type may ambiguously match more than one string. In section
> 5, "The values of nodes whose type is derived by union from an XML
> Schema primitive type are represented by a sequence of atomic values
> each of whose type is one of the individual types from the union.
> The union type information is lost and only the specific types of
> each individual item is retained.
>
> 1. (Nit) Shouldn't this be "...derived by union from XML Schema
> primitive types..."?

It should probably be only "derived by union". There shouldn't be any
requirement for a union type to be derived from a primitive type, or
from a built-in type.

> 2. Given the following:
>
> <element name="ambig">
>   <simpleType>
>     <union memberTypes="xs:integer xs:string"/>
>   </simpleType>
> </element>
>
> And an instance:
>
> <ambig>5</ambig>
>
> Then is the value of this node the sequence (5, "5")? If so, what is
> the reason for preserving both values? Are they used elsewhere? This
> treatment seems inconsistent with that given non-primitive types,
> like list. If not, and the value is (5) please ignore the remaining
> questions and explain what the paragraph in question really means?

The value of this node is (5). What the paragraph means is that if you
have:

<element name="ambig">
  <simpleType>
    <list>
      <simpleType>
        <union memberTypes="xs:integer xs:string"/>
      </simpleType>
    </list>
  </simpleType>
</element>

and an instance:

<ambig>5 foo 7.3</ambig>

then the value of the <ambig> element node is (5, "foo", "7.3").

> 3. If so, is this the value returned by the dm:typed-value accessor
> for the node described in 4.3.2?

The typed value is the sequence of atomic values: (5) in the first
case, (5, "foo", "7.3") in the second case.

> 4. Whether the answer is (5) or (5, "5") I would guess the dm:type
> accessor would return xs:integer and this would be the value of type
> in the data model, as this is the value consistent with validation?

No; dm:type() gives the QName of the type of the *node*, not the type
of the *value* of the node. So in both the above cases, since the
simple type of the <ambig> element is an anonymous type, it would
return an implementation-dependent unique QName. If the schema looked
like:

<element name="ambig" type="my:integer-or-string">

<simpleType name="integer-or-string">
  <union memberTypes="xs:integer xs:string"/>
</simpleType>

then dm:type() would give the QName my:integer-or-string.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS