These changes are in more-or-less reverse chronological order, with the most recent changes first.
See also the list of general Kawa changes.
Fix some problems building Qexo from
source using configure+make
.
A huge number of changes to bring Qexo close to compliance with the XQuery specification. Qexo now passes over 98% of the tests in the XQuery Test Suite. See the status page for the current status.
The license for the Kawa/Qexo software has been changed to the X11/MIT license.
Can set the base uri from the command line:
base-uri=string
.
Added the qexo:write-to-if-changed
function.
The order by
clause of FLWOR-expressions now works.
qexo
command-line command is now installed
(if using make
to build and install).
The doc
function now properly remembers previously-read
documents, so reading the same document twice yields identical nodes,
as required by the specification.
The doc-available
function is newly implemented.
The declare base-uri
statement now works.
The standard functions distinct-values
, reverse
,
compare
, local-name
, and namespace-uri
are now implemented.
The min
and max
now atomize nodes if needed.
Hence some more standard use cases now work.
External variables are implemented.
For example given a file script.xql
containing:
declare variable $input external;
doc($fname)
you can run it thus:
qexo fname=my-file.xml -f script.xql
You can specify the serialization parameters
doctype-system
and doctype-public
.
Warns about old syntax.
Handle declare default collation
. This is mainly a place-holder
so we can correctly implement functions that use collations.
Added .xq
and .xquery
as XQuery file extensions,
to match latest draft.
Added QName functions local-name-from-QName
,
namespace-uri-from-QName
, prefix-from-QName
,
and namespace-uri-for-prefix
.
Implement namespace declaration attributes such as
<a xmlns:a="URL">
.
'M to N' is now empty if M > N, following the November '03 draft.
New Java api for evaluating Java expression with a given context sequence
(item, position, size). See Running.html
.
Much improved namespace support. Namespace attributes in a source xml document are remembered, and correctly serialized (printed). There is support for namespace undeclarations (as in the XML Namespaces 1.1 Candicate Recommendation). Copying element nodes (as needed when creating new element nodes with element constructors) should correctly copy the namespace declarations. Still missing is support for namespace attributes in element constructors.
Support compiled library modules: 'module' and 'import module' statements. Efficient cross-module calling. (Needs documentation.)
Proper QName handling of variable and function names.
Support absolute path expressions (starting with /
or //
).
Working general implementation of position()
and last()
.
Handle the remaining XPath axes, such as parent and also all the optional axes (ancestor, following-sibling etc). (Because of the above changes, you may see a performance regression, as I concentrated on correctness and generality. I'll be gradually adding optimizations when I can.)
Implement 'at' (position) clause of FLWOR statement.
Implement 'some ... satisfies; and 'every ... satisfies'.
Various syntax changes for the August '03 draft:
distinct-nodes
and various string functions are implemented.
The '|' or 'union' and 'intersect' and 'except' operators are implemented.
The 'declare xmlspace' declaration is implemented, which should now correctly handle "Boundary whitespace" in element constructors.
Optional function returns are now handled. Some type specifiers would generate bad bytecode; these should now be fixed.
Various XQuery changes, based on the May '03 specification:
Implemented define variable'
except the external
support.
Implemented the trace
function.
Implemented the new comment syntax.
Supports the new element(name, *)
type-specifier syntax.
Expanded string literal syntax, with references and doubled quotes.
Allow doc
as synonym for document
function.
Implemented the full 2-operand document
function (now-deprecated, sigh).
Implemented base-uri
support.