[xquery-talk] count all the distinct timezones in an XML
mike at saxonica.com
Fri Dec 12 11:48:15 PST 2008
The nearest to a map() function is the "for" expression
count(distinct-values(for $x in //element(*, xs:date) return
for $x in //element(*, xs:dateTime) return
for $x in //element(*, xs:time) return
timezone-from-time($x))) eq 1
But there is also the "simple mapping operator" "/" -
It's rather tedious that there's no polymorphism (or support of union types)
so that the different date/time types have to be enumerated like this.
Note that if a dateTime has no timezone, timezone-from-dateTime() will
return (), which is ignored in counting the distinct values.
From: talk-bounces at x-query.com [mailto:talk-bounces at x-query.com] On Behalf
Of Matthew Rawlings
Sent: 12 December 2008 11:27
To: talk at x-query.com
Subject: [xquery-talk] count all the distinct timezones in an XML
How can I count all the distinct timezones in a single XML document using
I have an XML document with many elements and attributes with the type
xs:date or xs:datetime. One of the rules of the system receiving my document
is that all timezones must be the same in the document. Ideally I would like
to express this constraint purely in XPath 2 rather than XQuery so I can put
the constraint in a xs:assert statement.
If there was a map function in XPath I would write something like this:
xs:date)|attribute(*, xs:date)|element(*, xs:datetime)|attribute(*,
xs:datetime))))) eq 1
This XPath would return true if all timezones were the same, and false
However there is no map function in XPath, so how can I achieve the same
thing without it? What is the nearest I could get.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the talk