- From: MW <onlymails@gmx.net>
- Date: Sun, 09 Mar 2003 18:04:24 +0100
- To: Jonathan Robie <jonathan.robie@datadirect-technologies.com>, public-qt-comments@w3.org
Hi Jonathan! In the working draft "XQuery 1.0: An XML Query Language" in chapter "4.5 Function Definitions" there is this example: define function depth($e as element) as xs:integer { {-- An empty element has depth 1 --} {-- Otherwise, add 1 to max depth of children --} if (empty($e/*)) then 1 else max(for $c in $e/* return depth($c)) + 1 } depth(document("partlist.xml")) But this function does not run in GALAX. And I think it is obvious that the function must not work, because the funktion-parameter is declared as "element", but it is called with a parameter of type "document". I think the declaration must be changed from "element" to "item". The next problem is the return value. The function only works properly if I explicitly construct (or cast as) xs:integer before returning the result. I've written a function which returns the correct result in GALAX: define function depth($item as item) as xs:integer { {-- An empty element has depth 1 --} {-- Otherwise, add 1 to max depth of children --} if (empty($item/*)) then xs:integer(1) else xs:integer(max(for $sub in $item/* return depth($sub)) + 1) } depth(document("partlist.xml")) I hope, I'm not absolutely wrong ... with kind regards, Michael
Received on Sunday, 9 March 2003 12:04:32 UTC