[xsl] [exsl] EXSL "1.0" RDDL and Implementation

Subject: [xsl] [exsl] EXSL "1.0" RDDL and Implementation
From: Uche Ogbuji <uche.ogbuji@xxxxxxxxxxxxxxx>
Date: Fri, 09 Mar 2001 22:33:16 -0700
I'm sorry I wasn't able to get all this done before my round of conferences.  
Luckily the Knowledge Tech 2001 and the 9th International Python conference, 
while quite productive, did provide me some time to keep my promises.

I have placed the RDDL resource glosses for the EXSLT 1.0 NSRefs (I 
scare-quote in the title because I assume there are more iterations to come 
before a blessed "1.0").  To check them out, just resolve the namespaces

http://xmlns.opentechnology.org/xslt-extensions/common
http://xmlns.opentechnology.org/xslt-extensions/sets
http://xmlns.opentechnology.org/xslt-extensions/math
http://xmlns.opentechnology.org/xslt-extensions/functions

I have written an extension module for users of 4XSLT 0.10.2 implementing 
EXSLT 1.0 common, math and sets.  Approx total implementation time: 2 hours (I 
love Python), even though node-set is the only one I had implemented before 
and even that needed a tweak.  Get it from

ftp://ftp.fourthought.com/pub/etc/4exslt-20010309.tgz

I'll hopefully get functions done tonight and maybe even an on-line demo.

Notes from implementation:

*  Jeni, could you add anchor names for each function in your specs?  It would 
make it easy to provide links from the implementation docs.

*  "The set:distinct function returns the nodes within the node set passed as 
the first argument that have different values. The 'value' of a node is
calculated by evaluating the expression held in the string passed as the 
second argument with the current node equal to the node whose value
is being calculated." and so on for the set functions.  Is the rest of the 
context (esp. the var bindings) just the context at the time set:distinct is 
invoked?  This is how I implemented it: node position and size = 1, 
context=node whose value is being computed, all else untouched.

* I assumed the string parameters passed to those set functions must be a 
string and can't just be an object to be coerced.  Is this what we want?  I 
now throw an exception if non-string is passed

* Just for the sake of consistency, maybe we should use "math" rather than 
"num" for the example prefix for the Math extensions.

* For num:min and num:max, I assumed the ordering is identical to that used by 
the XPath ">" operator.

* What do min and max return for an empty argument node set?  I just assumed 
boolean false, which is so arbitrary I probably should have just raised an 
exception

* I assume for num:sum that all nodes are converted to numbers as if with 
number()


-- 
Uche Ogbuji                               Principal Consultant
uche.ogbuji@xxxxxxxxxxxxxxx               +1 303 583 9900 x 101
Fourthought, Inc.                         http://Fourthought.com 
4735 East Walnut St, Ste. C, Boulder, CO 80301-2537, USA
Software-engineering, knowledge-management, XML, CORBA, Linux, Python



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread