[
Lists Home |
Date Index |
Thread Index
]
On Fri, 21 Oct 2005, Alan Gutierrez wrote:
> * Vladimir Gapeyev <vgapeyev@seas.upenn.edu> [2005-10-20 21:54]:
>>
>>
>> On Thu, 20 Oct 2005, Alan Gutierrez wrote:
>>
>>> I'm confused by the wording of...
>>>
>>> http://www.w3.org/TR/xpath-datamodel/#TypedValueDetermination
>>>
>>> ...where it discusses the value value determination for lists.
>>>
>>> "For each of these lexical forms, the type of the corresponding
>>> item is found in {item type definition}."
>>>
>>> I can't figure out if the {item type definition} is attached to
>>> the list as a property, or an index property, or if it attached
>>> to the item within the list. The mention of recursion implies
>>> the latter.
>>
>> I think one would need a larger quote to understand the question...:
>
> Yes. But, I didn't know what to quote, because I didn't
> understand the question myself. :)
>
>> Brief answer: {item type definition} is a property of T, the
>> schema's list _type_ that validated the value in question. It is
>> not a property the list _value_.
>>
>> One could arrive to this understanding after meditating over WXS Part 2,
>> 4.1.1 http://www.w3.org/TR/xmlschema-2/#rf-defn
>
> Which means that a list defined in this section is a list of
> items that are of the same type, right?
No, if {item type definition} is a union type!
I guess, one needs an example, but I wouldn't try to reproduce WXS syntax,
so please be forgiving for that!
Suppose you have successfully validated the element
<a>2 foo 3.14</a>
against the schema
element a of type T1
simple type T1 = list of T2
simple type T2 = union of {xs:integer, xs:decimal, xs:string}
In PSVI, the contents of <a> are typed as T1.
But according to the above quoted algorithm from XPath / XQuery Data
Model, the typed value corresponding to the contents of <a> is the
following sequence of annotated values:
2 of type xs:integer, "foo" of type xs:string, 3.14 of type xs:decimal
Note: T2 in this example is the {item type definition} menttioned in the
algorithm.
As I understand this, the algorithm just reconstructs "the basic
reasons" why the PSVI has T1 as the annotation on <a>'s contents.
One reason the algorithm is needed at all, because the names of union
types hide these "basic reasons".
Hopefully this hepls, and I did not mess up too much!
Vladimir
|