[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
At 03:11 PM 5/7/2002 -0400, Elliotte Rusty Harold wrote:
>At 10:17 AM -0700 5/7/02, Jonathan Robie wrote:
>
>>What behavior would you like XQuery and XPath to adopt that is different 
>>from what is in the current Working Drafts? Can you illustrate the 
>>advantages of this behavior with an example?
>
>Here's just one:
>
>         avg( input()//person/name )
>
>You say you want this to fail. I say I want it to return NaN if any of the 
>identified name elements contains a non-number and the actual average if 
>they all do contain strings that can be parsed as numbers. Neither of us 
>is right. Neither is wrong. We simply have different needs in our local 
>environments. Tomorrow I may move to a different local environment with 
>different needs.

If error handling is different in each environment, then real 
interoperability is very hard to achieve.

>I also have a use-case of teaching this stuff that requires it be simple 
>and intelligible. Based on that, I strongly oppose systems that have 20 
>different ways to do the same thing, and systems that mangle multiple 
>layers together instead of allowing them to be separated out and used 
>independently. It makes my job more complicated.

I teach XQuery too, so I agree with this need.

As for layering, I think that many layers, each with a different type 
system, tends to lead to more complex systems, not less complex systems. To 
repeat a limerick from an earlier discussion:

         I've completely rejected the load
         Of specs that would seek to erode
         My 12 software layers
         And typeless compares
         -- The complexity's now in my code!

If what you are doing is querying persistent XML data or a persistent view 
of XML data, and the data is typed data, I think that the integrated type 
system really simplifies things a lot.

> From my perspective, those who want typing need to demonstrate the 
> use-cases. Looking at the XQuery use-cases document I don't see many 
> there. Furthermore, I specifically reject the following use-case:
>
>  1.7.4.3 Q3 "Select all elements using datatypes from "XML Schema: Part 
> 2" datatypes"
>
>That's wildly artificial. Are there any others?

This is a valid point. The use cases we have for strong typing are not 
really in our documents, they have been presented privately, and I think we 
need to work on this.

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.

If we had a schema for this, and the schema said a bid is a decimal, we 
could write this without the cast. Since we can currently only cast one 
item at a time, we can also get rid of a FLWR:

<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($z) }</high_bid>
         </item_tuple>
     sortby(itemno)
   }
</result>

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.

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.

Jonathan


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.