Applied Elliotte's suggestions and moved the document() function into the org.jaxen.function.xslt package to better reflect the fact that it is an XSLT function rather than XPath 1.0 as well as adding the lang() function to the list of known problems.
Applied patch submitted by Shawn Bayern to fix the booleanValueOf() method.
Added licenses to each source file and a proper manifest to the build at last ;-).
There is now an XPath interface in the org.jaxen package to represent any XPath implementation. So this means that the XPath API of Jaxen is now polymorphic, the same interface can work with any model.
This now means that the org.jaxen.* package represents a purely interface based API to any XPath engine. So it should be possible to implement XPath, FunctionContext, NamespaceContext, VariableContext on any XPath engine if so desired.
The XPath implementation for each model has now got a fully qualified class name. The following code describes how to instantiate an XPath object for each model.
// for DOM XPath xpath = new DOMXPath( "//foo" ); // for dom4j XPath xpath = new Dom4jXPath( "//foo" ); // for Electric XML XPath xpath = new ElectricXPath( "//foo" ); // for JDOM XPath xpath = new JDOMXPath( "//foo" );
The XPath.valueOf() method is now deprecated, XPath.stringValueOf() should be used instead.
Added new extension functions kindly provided by Mark Wilson. They are as follows...
Locales can be specified either using a variable which is a Locale object or using an xml:lang style string which specifies the Locale via a language together with an optional country and variant such as 'fr', 'fr-CA' or 'es-ES-Traditional_WIN'. e.g.
upper-case( @foo, $myLocale ) upper-case( /foo/bar, 'fr' ) lower-case( foo, 'fr-CA' ) upper-case( @foo, 'es-ES-Traditional_WIN' )
The translate() function is now implemented - thanks to Jan for that!
Some auxillary implementation detail changes, which shouldn't affect the public API in any way are as follows
Initial beta development cycle. Please see CVS changelogs for up-to-date list of changes.
format-number()
XSLT function is not yet implemented but would be useful. Any volunteers?
upper-case()
and lowercase-case()
could well follow the example of
XSLT 2.0
by using the Unicode case mappings