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(_at_)justinjohansson(_dot_)com]
Sent: 02 September 2008 18:01
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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.
_____________________________________________________________
___________
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--