Subject: RE: [xsl] XPath 2 sequence item type determination From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 2 Sep 2008 18:00:28 +0100 |
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. > >_____________________________________________________________ > ___________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath 2 sequence item typ, Justin Johansson | Thread | Re: [xsl] XPath 2 sequence item typ, Dimitre Novatchev |
Re: [xsl] XPath 2 sequence item typ, David Carlisle | Date | Re: [xsl] XPath 2 sequence item typ, Justin Johansson |
Month |