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 EnumerateAxis, 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.