Internal changes
Namespace nodes
It is no longer always true that namespaces present on a parent element are automatically inherited
by the children. XML Namespaces 1.1 allows namespaces to be undeclared using a construct such as
xmlns:x=""
, and this capability is reflected in the model. Namespace undeclarations will
be output by the serializer if the serialization property undeclare-namespaces="yes"
is set.
In XSLT, this can be defined on xsl:output
. In XQuery, it can be controlled from the API (using
the constant SaxonOutputKeys.UNDECLARE_NAMESPACES
or the command line option
!{http://saxon.sf.net}undeclare-namespaces=yes
). If you don't set this option, you probably
won't notice any difference. However, the change does mean that you sometimes get an unexpected
xmlns=""
undeclaration.
The rules for both XSLT and XQuery say that namespace nodes are never inherited when you add an element
to a new parent element. Saxon isn't quite implementing this yet. Given the way Saxon represents namespaces
internally, namespaces get inherited unless the code goes out of its way to prevent it, and at the moment
this is only happening when an element is explicitly copied using xsl:copy
or the equivalent
in XQuery.