[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: XPath 1.5? (was RE: typing and markup)


xpath max date
At 12:52 PM -0700 5/7/02, Jonathan Robie wrote:


>One use case is the Use Case R, which is currently too complex 
>precisely because it lacks a schema, which forces us to use casts to 
>get some things to come out right. Here are some examples:
>
>1.4.4.2 Q2 - as is:
>
><result>
>   {
>     for $i in document("items.xml")//item_tuple
>     let $b := document("bids.xml")//bid_tuple[itemno = $i/itemno]
>     where contains($i/description, "Bicycle")
>     return
>         <item_tuple>
>             { $i/itemno }
>             { $i/description }
>             <high_bid>{ max(for $z in $b/bid return decimal($z)) }</high_bid>
>         </item_tuple>
>     sortby(itemno)
>   }
></result>
>
>Without the cast, max() would sort according to the string value, 
>not the decimal value.

I would propose more simply that max() and similar functions always 
treat their arguments as numbers. I personally have never heard of a 
max() function that operates on strings anyway. Even if you tried to 
define it as the last in sort-order or some such, it really depends 
on the sort order, so you need an additional argument, not that this 
is a natural thing to do in the first place.

I suppose you might have a more logical max on date and time types, 
but again it's not common. I propose instead a latest() and 
earliest() which would always treat their arguments as dates. This 
seems much more natural to me than either of the solutions you 
propose.

Similarly, the avg() function should convert all nodes passed to it 
to numbers, as if by the XPath 1.0 number() function.

>You can pick through the whole Use Case R and see many examples like 
>this. Every single cast is superfluous in these use cases, present 
>only because there is no schema.
>

I skimmed them. Nothing jumped out at me that couldn't be handled by 
my proposal, but maybe I missed something. In brief, I suggest if you 
pass something to a function that expects a number, it's converted to 
a number. If you pass something to a function that expects a date, 
it's converted to a date. No muss, no fuss. What am I missing?

>There are two reasons I don't like these casts. One is that it is 
>tedious. The other is that when I cast, I tell the static type 
>system that I think I'm smarter than it is, and it will simply 
>believe me that $z is a decimal. If I'm wrong, this may result in an 
>error which I will not encounter until run time.
>

Casting presumes types. If we eliminate static typing from the 
language casting is no longer needed, just like in XSLT 1.0 where all 
the conversions are automatic.
-- 

+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | elharo@m... | Writer/Programmer |
+-----------------------+------------------------+-------------------+
|          The XML Bible, 2nd Edition (Hungry Minds, 2001)           |
|             http://www.cafeconleche.org/books/bible2/              |
|   http://www.amazon.com/exec/obidos/ISBN=0764547607/cafeaulaitA/   |
+----------------------------------+---------------------------------+
|  Read Cafe au Lait for Java News:  http://www.cafeaulait.org/      |
|  Read Cafe con Leche for XML News: http://www.cafeconleche.org/    |
+----------------------------------+---------------------------------+

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.