[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)
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! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|