XmlPrime 2.0

XmlPrime is an XML Processor for the Microsoft .NET platform versions 2.0 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 and XPath 2.0.

Change log

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 (# xp: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.