Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


RE: [xsl] XPath 2 sequence item type determination

From: "Michael Kay" <mike@------------>
To:
Date: 9/2/2008 5:01:00 PM
Firstly, a sequence as such does not have its own type: the (dynamic) type
of a sequence is purely a function of the types of the items it contains.

Secondly, it's quite deliberate that there is no function to determine the
"most precise type" of an XPath value, only a function (or operator) to test
whether it conforms to a given type. If there were such a function, it would
enable you to determine and to become dependent on implementation details
that you should not be concerned with, for example that index-of() always
returns a sequence of xs:int values (or perhaps even jx:my17bitInt) whereas
the spec only requires xs:integer. Very often the type would be one that
you've never heard of, and have no way of asking questions about.

"instance of" is not a hack, it is the correct solution.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Justin Johansson [mailto:mail@xxxxxxxxxxxxxxxxxxx] 
> Sent: 02 September 2008 18:01
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] XPath 2 sequence item type determination
> 
> David, many thanks for the insight, if not a "hack", and no 
> disrespect intended.
> 
> Though, say, if one wants to stick to standards and not 
> proprietary extensions, then surely the suggestion of using a 
> series of "if instance of" is problematic in that it is 
> relying on the external string representation of the type 
> (via xsd schema) to guess the type of the
> (internal) XDM item?
> 
> I may be missing something but the XPath et al specs clearly 
> spell out the concept of a sequence and it to be a list of 
> sorts and that which contains items, and said items of same 
> being of either an atomic or node type. 
> 
> However, having done that, the spec does not enlighten one as 
> to how to determine the type *precisely* other than allowing 
> one to resort to hacks of the type you suggested.
> 
> Am I missing something, or is your opinion that of mine which 
> is that the spec is lacking?
> 
> Thanks for your input, Justin J
> 
> 
> 
> 
> At 04:54 PM 2/09/2008 +0100, you wrote:
> >
> >if (instance of . xs:integer) then 'integer' else if (instance of . 
> >xs:boolean) then 'boolean' else ....
> >
> >
> >or, if you don't want to write a big nested set of tests and 
> are running
> >saxon, 
> >
> >http://www.saxonica.com/documentation/extensions/functions/ty
> peannotation.h
> tml
> >
> >
> >type-annotation(item as item()) ==> xs:QName
> >
> >This function takes an item as argument. If the argument is 
> a node, the
> >function returns the type annotation of the node, as a QName. If the
> >type is anonymous, this will be a system-generated internal 
> name. If the
> >argument is an atomic value, the function returns the type 
> label of the
> >atomic value, again as a QName.
> >
> >David
> >
> >
> >_____________________________________________________________
> ___________
> >The Numerical Algorithms Group Ltd is a company registered in England
> >and Wales with company number 1249803. The registered office is:
> >Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
> >
> >This e-mail has been scanned for all viruses by Star. The service is
> >powered by MessageLabs. 
> >_____________________________________________________________
> ___________


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent