Changes specific to .NET
Saxon on .NET is now built using IKVM 8.1.5717.0 which is required to support the Java 8 features used in the internals of Saxon. This release of IKVM integrates OpenJDK 8u45.
We are now using generic types for the handling of error lists for the Xslt, XPath, XQuery and Schema
processors. For example the property ErrorList
(on XQueryCompiler, XsltCompiler, etc.) uses parameterized lists
IList<StaticError>
.
The Processor class is now an implementation of the Saxon Java
interface ApiProvider.This provides a marker interface to
represent an API that is provided as a layer on top of this Configuration. This also make it
possible to retrieve the .NET Processor
object via the Processor
property on
the class XdmNode.
The class FeatureKeys is now available on .NET. Java users would be familiar with
this class which defines a set of constants, representing the names of Saxon configuration options which can be supplied to the Saxon
Processor using the SetProperty
method.
The class Feature is now available on .NET. As on Java
this class defines a set of constants, representing the details of Saxon configuration
options which can be supplied to the Saxon method Configuration.setProperty() using the
Processor using the SetProperty
method.
The classes XPathCompiler, XQueryCompiler, and XsltCompiler now have
the property FastCompilation
which causes the compiler to reduce the amount of time it spends
optimizing the code for run-time execution speed; it may also reduce the effort devoted to ensuring good error diagnostics.
This option is appropriate when compiling code that will only execute once, with a modest amount of input data,
and where the code is known to be functionally correct.
In the class XQueryCompiler the XQueryLanaguageVersion
property now only accepts "3.1". Any attempt
to set a different value is ignored. The Processor
property can now only be used to get the Processor object.
In the XsltCompiler
class the CompilePackages
method is now deprecated, please use the configuration to add list of packages. The XsltLanaguageVersion
property now only accepts "3.1". Any attempt
to set a different value is ignored. The Processor
property can now only be used to get the Processor object.
The XPathExecutable class now has the method
EnumerateExternalVariable2
which returns IEnumerator<QName>
.
We have added the interface class ExtensionFunction for simple external/extension functions. Users can implement this interface and register the implementation with the Processor.
In the SchemaValidator class we have changed the
ErrorList
property to return the list of validation errors as an IList
with
generic parameter ValidationFailure. The ValidationFailure
class
is a new class which better represents validation errors.
The following new properties have been added to handle the top-level element to be validated:
DocumentElementName
, DocumentelementTypeName
,
DocumentElementType
.
The DocumentBuilder class now contains the SchemaValidator
property to set and get the SchemaValidator
to be used.
XmlDestination is now an interface instead of abstract class. This interface has the method GetUnderlyingDestination
which
returns a Java Destination
class supported by Saxon internals.
The class Serializer is no longer available as a free standing
class, it must be created using the Processor class. The return type
of the method Serializer.GetOutputDestination()
has been changed to object
. This
class has a number of serialization parameters available for use by the Serializer
.
The BaseUri
property allows the setting and getting of the base Uri for the Serializer
We have added the RawDestination class which is a Destination
that accepts a sequence output by
xmlns:app="http://schemas.android.com/apk/res-auto" stylesheet or query and returns it directly as an XdmValue, without constructing an XML tree, and without serialization.
For the NullDestination
we can now set and get the BaseUri
property.
In the class XdmValue we now use generics for the methods XdmValue.GetList
which now returns IList<XdmItem>
. Likewise the GetEnumerator
method returns
IEnumerator<XdmITem>
. We have added the method ItemAt(int i)
which returns the i'th item in the value. We have also added the method DocumentOrder
which returns
a new XdmValue
containing the nodes present in the
XdmValue
with duplicates eliminated, and sorted into document order.
The class XdmArray now offers the methods Concat
and AppendMember
.
In the class XdmMap we have changed the parameter for the methods
Get
and ContainsKey
to receive XdmAtomicValue
instead of object.
In the class XdmNode we now use generics for the method EnurateAxis
, which
now returns an IEnumerator<XdmNode>
object.
In the class XdmAtomicValue we have added the constructor
XdmAtomicValue(String lexicalForm, XdmAtomicType type)
, which is used to construct an atomic
value of a given type given as an XdmAtomicType.
The interface IXdmEnumerator
and IXdmEnumerable
now use generic type parameter XdmItem.
This change affects the implemented classes SequenceEnumerator, DotNetSequenceIterator and EmptyIterator.