XmlPrime 4.0

XmlPrime is an XML Processor for the Microsoft .NET platform versions 4.6.1 or later. It builds upon the classes in the System.XmlSystem.XmlSystem.Xml namespace and provides up-to-date standards compliant implementations of XSLT 2.0, XQuery 1.0, XQuery 3.0, XQuery 3.1 XPath 2.0, XPath 3.0, XPath 3.1 and XInclude 1.0.

Change log

Version 4.0

  • Support for XPath 3.1 and XQuery 3.1.
  • Required .NET Framework 4.6.1 or later due to dependence on the System.Collections.Immutable library.

Version 3.0

  • Full support for XPath 3.0 and XQuery 3.0.
  • Compilation to byte code.
  • Greatly improved execution and compilation speed.

Version 2.9.0

  • Implemented prefix normalization for XHTML serialization of HTML 5.
  • Fixed default namespace undeclarations.
  • Fixed an invalid type cast exception in tail recursive functions.
  • Fixed an error in HTML indentation which could cause missing content.
  • Fixed a bug in evaluation of optimized for expressions.
  • Fixed handling of the item-separator serialization property.
  • Improved conformance for format-number and format-integer functions.

Version 2.8.0

  • Added XmlPreloadedResolverXmlPreloadedResolverXmlPreloadedResolver for developers using .NET Framework versions prior to 4.0.
  • Added --timezone parameter to command line XQuery and XSLT tools.
  • Fixed a bug which caused incorrect behaviour when a query or transformation was executed in parallel.
  • Fixed GetComponentsGetComponentsGetComponents
  • Fixed error condition in fn:format-integer.
  • Improved conformance of fn:format-number and fn:format-integer.
  • Fixed identification of vacuous expressions in XQuery Update.
  • Fixed an error in the in-scope namespaces of a directly constructed element.
  • Fixed bugs in the parsing of DTDs.
  • Updated higher-order functions to reflect changes made in XPath and XQuery Functions and Operators 3.0 W3C Candidate Recommendation 21 May 2013.

Breaking Changes:

Version 2.7.0

  • Added support LEIRI and IRIs to AnyUriAnyUriAnyUri.
  • Added properties IsAbsoluteIsAbsoluteIsAbsolute and IsOpaqueIsOpaqueIsOpaque to AnyUriAnyUriAnyUri.
  • Added method CallInitialTemplateCallInitialTemplateCallInitialTemplate to XsltXsltXslt.
  • Fixed recursive calls to methods performing join operations.
  • Fixed a number of issues relating to the namespace axis.
  • Improved conformance of format-number, format-integer, parse-xmland parse-xml-fragment functions.
  • Fixed loop invariant hoisting around general comparisons.
  • Fixed a null reference exception in schema validation.
  • Fixed parsing of xsl:result-document attributes and whitespace in XSLT stylesheets.
  • Fixed handling of strip/prevserve space to apply to child whitespace only.
  • Fixed handling of xsl:keys from XSLT 1.0 and 2.0 stylesheets.
  • Corrected the setting of the Base URI on the document node of results produced with xsl:result-document.
  • Improved restrictions on permissible values for the BaseOutputURIBaseOutputURIBaseOutputURI property.
  • Numerous other bug fixes.

Version 2.6.0

  • Added support for msxsl:node-set.
  • Added support for html-version serialization parameter to specify generation of HTML5.
  • Fixed bugs relating to use of the <msxsl:script> and <xp:script> XSLT extension elements.
  • Fixed handling of schema-elements and substitution groups (Bug 19425)..
  • Improved conformance for Functions and Operators 3.0.
  • Numerous other bug fixes.

Version 2.5.0

Breaking Changes:

Version 2.4.0

Breaking Changes:

Version 2.3.0

  • Added support for the XQuery Update Facility 1.0. This is exposed via the XQueryXQueryXQuery class and can also be used in the XQuery command line tool and an MSBuild task is also available.
  • Fixed a bug triggered by optimization which caused incorrect results.

Breaking Changes:

Version 2.2.0

Breaking Changes:

Version 2.1.0

Breaking Changes:

Version 2.0.0

Breaking Changes:

Version 1.5.0

  • XML version (1.0 or 1.1) can now be specified in the static context.
  • Results can now be serialized as XML 1.1.
  • Query plans can now be output as XML.
  • Mathematical functions due to be included in the next version of XPath and XQuery Functions and Operators have been moved into the math namespace.
  • Rules for determining the validity of NCNames and QNames have been updated to reflect changes introduced in the 5th edition of XML 1.0.
  • The types of external parameters can be specified via the static context.
  • Improved efficiency of variables which are only evaluated once.
  • Improved performance of user defined functions.
  • Improved performance of functions which recurse on a subsequence of one of their arguments.
  • Small for loops will be unrolled.
  • Prevented optimizer from optimizing away runtime errors in some circumstances.
  • Added handling for MIME types in the DocumentSet. This is required for correct behaviour of the XSLT document function.
  • Introduced a new optimization level (OptimizationLevel.Specialization. This enables potentially expensive function specialization. This can be selected using -O4 with the command line tool.
  • In some circumstances, namespace declarations could be erroneously omitted.
  • Fixed nested XML Schema validation.
  • Fixed output of empty XHTML elements during serialization.
  • Many small fixes.

Breaking changes

Version 1.4.0

  • Modules of functions can now be written in .NET and used in XQuery programs and XPath expressions.
  • Intermediate (constructed) nodes are now serialized directly into XdmDocumentXdmDocumentXdmDocument instances, rather than building temporary trees. This should lead to improved performance of queries performing further processing on constructed nodes.
  • Some more improvements to join analysis - left outer joins and group-by expressions are spotted (and hence optimized) more often.
  • typeswitch expressions are now more efficient when the argument is a single item.
  • ToStringToStringToString now returns the value cast to a string.
  • Many small fixes.

Breaking changes

Version 1.3.0

  • The XmlPrime DLL can now be precompiled with ngen. Previously ngen would crash.
  • Improved unboxed evaluation, especially for aggregate functions.
  • Many small performance improvements.
  • Internal changes in preparation for compiling queries to dynamic methods

Version 1.2.0

  • Queries can now be evaluated directly to a serializer, avoiding building an intermediate representation.
  • Push-based evaluation has been implemented for all expressions, and is used for all expressions that are determined to be strict.
  • Added the (# xmlprime:eager #) pragma to force eager evaluation.
  • import schema now ignores location hints if the namespace is already statically available.
  • Imported schemas that fail to compile are no longer added to the available schema set.
  • Fixed an exception when evaluating treat as empty-sequence() in some circumstances, and improved optimization of type constraints.
  • Corrected behaviour of MoveToIdMoveToIdMoveToId for constructed nodes.
  • Updated liveness analysis to fix problems when using partially evaluated lazy variables in join operations.
  • Avoided distinct-doc-order for unions such as (@*|node()).
  • Minor improvements to error messages.
  • Many small performance improvements.

Version 1.1.0

Version 1.0.2

Version 1.0.1

  • First full release.