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.