The set of supported platforms has been updated with 64-bit Linux support.
Element expressions are now first-class objects. Any markup-element-event
instance can be used as an element expression and vice versa.
previous
can now be used inside an element expression.
The new operator elements of
can be used to obtain the element stack of arbitrary element expressions.
repeat over reversed
can be applied to any shelf reference.
The new built-in sink #log
provides a more flexible way of logging user messages than #error
and
log-message
.
Shelf-class optional
arguments can now have initializers.
Operator create-processing-instruction-event
has been added to the language for easier generation of
custom markup.
The library OMFF8859 has been added for converting between ISO/IEC 8859 and UTF-8.
The library OMFFUTF32 has been added for converting between UTF-32 and UTF-8.
An instance of a markup-buffer
type can now be used as a queue, thanks to the new function
consume
in the ommarkuputilities
library.
The omuri
library has been extended with function uri.relative
, for converting an absolute URI
into a relative one with respect to a given base URI.
The OMUTF-8 library now includes a utf8.length
function that can be used to determine the number of
UTF-8 code points in a UTF-8 encoded string
The set of supported platforms has been updated.
The types sgml-dtd
and xml-dtd
have been introduced, both subtypes of the type dtd
.
The introduction of these types allows compiled DTDs to be manipulated as first-class objects.
The built-in #current-dtd
has been introduced, providing access to the DTD being used for the
currently-active parse.
#doctype
is now writable: its value can be modified to affect the document type of the currently-active
parse.
The types element-declaration
, attribute-declaration
, and entity-declaration
have been
introduced. The introduction of these types allows the elements, attributes, and entities declared in a compiled
DTD to be manipulated as first-class objects.
The operator declared-elements of
has been introduced; it can be used to obtain the elements declared
in a compiled DTD.
The operator attributes of
has been extended to apply to instances of element-declaration
; it
can be used to obtain the attributes declared in an element declaration.
The operators declared-general-entities of
and declared-parameter-entities of
have been
introduced; they can be used to obtain the entities declared in a compiled DTD.
The operator content of
has been extended to apply to instances of element-declaration
; it can
be used to obtain a representation of the content model in the element declaration.
The operator name of
has been extended to apply to instances of element-declaration
; it can be
used to obtain the name of the element declared in the element declaration.
The built-in functions create-element-declaration
and create-attribute-declaration
have been
introduced, to allow element and attribute declarations to be created programmatically.
The built-in function create-element-event
has been introduced, to allow element events to be created
programmatically.
The types declared-attribute
and specified-attribute
have been introduced to represent the
types of the attributes
and specified attributes
shelves, respectively. specified-attribute
is a subtype of declared-attribute
.
The attributes
shelf can now be passed to functions as a read-only
argument of type declared-attribute
. The specified attributes
shelf can now be passed to functions as a read-only
argument of type declared-attribute
or specified-attribute
.
Functions can now return shelf references, in addition to single values.
Pattern variables can now be passed through as optional
function
arguments, whether or not they are specified.
A new OASIS catalogs support library, OMOASISCATALOGS has been introduced, to enable programmers to use OASIS catalogs to resolve external entities.