XmlPrime 1.1
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 XQuery 1.0 and XPath 2.0.
Implemented standards
XmlPrime implements the following W3C standards.
- XQuery 1.0: An XML Query Language (Second Edition)
- XML Path Language (XPath) 2.0 (Second Edition)
- XSLT 2.0 and XQuery 1.0 Serialization (Second Edition)
- XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)
- XQuery 1.0 and XPath 2.0 Formal Semantics (Second Edition)
- XQuery 1.0 and XPath 2.0 Data Model (XDM) (Second Edition)
- Canonical XML Version 1.0
Change log
Version 1.1.0
-
Completely new serialization implementation.
- Serialization interface now much closer to XmlWriterXmlWriterXmlWriter. There are some breaking API changes in the XmlPrime.SerializationXmlPrime.SerializationXmlPrime.Serialization namespace.
- A new serialization method has been added which allows for serialization of Canonical XML 1.0.
- XmlWriterXmlWriterXmlWriter instances can be created with the full set of serialization settings.
- Some new serialization parameters have been added.
- XmlPrime now only requires .NET Framework 2.0, rather than 3.5.
- Added XmlPrime extension methods for .NET Framework 3.5 to give a simple way of executing XPath 2.0 expressions.
- Added some more constructors to XdmDocumentXdmDocumentXdmDocument, to match XPathDocumentXPathDocumentXPathDocument.
- Removed IXPathNavigableIXPathNavigableIXPathNavigable overloads for methods taking XPathItemXPathItemXPathItem, as this was causing calls with XPathNavigatorXPathNavigatorXPathNavigator to be ambiguous.
-
Reverse axes were previously being cached and reversed. This is now skipped if the results are not needed in document order - eg. for
/ancestor::*[1]
-
Improved optimization of
fn:data
applied to constructed nodes. - Conformance to latest errata regarding in-scope schema types from modules.
-
Bug fixes:
- XQuery parsing changed to reflect erratum regarding the leading-lone-slash constraint.
- The order comparison of navigators over XdmDocumentXdmDocumentXdmDocument instances was incorrect for namespace nodes.
-
The
fn:base-uri
,fn:data
andfn:node-name
functions behaved incorrectly for namespace node arguments. - The parsing of URI ports was incorrect in AnyUriAnyUriAnyUri.
- The UserInfoUserInfoUserInfo property was truncating the first character
- Empty document nodes were incorrectly causing spaces to be inserted between sequences of atomic values when constructing an element's content
- XPathNavigatorXPathNavigatorXPathNavigator instances were sometimes not being cloned when evaluating a query to a single node, leading to the returned navigator pointing to the wrong node.
- Fixed some places where the static types of expressions were not being correctly updated during optimization, causing a NotSupportedExceptionNotSupportedExceptionNotSupportedException or ArgumentNullExceptionArgumentNullExceptionArgumentNullException at runtime.
-
In some cases function specialization was causing
fn:subsequence
to throw a NotSupportedExceptionNotSupportedExceptionNotSupportedException at runtime. -
The optimized form of
fn:sum($x to $y)
was producingxs:decimal
values instead ofxs:integer
values. -
fn:distinct-values
was missing an evaluator to produce XPathItemXPathItemXPathItem for upstream functions, leading to a NotSupportedExceptionNotSupportedExceptionNotSupportedException at runtime. - The in-scope namespaces of a constructed element did not include the empty prefix in some situations.
-
The
fn:element-with-id
function gave incorrect results for schema-defined union types includingxs:ID
.
Version 1.0.2
- Set default type checking mode to optimistic, as per documentation.
-
Fixed compatibility with XmlDocumentXmlDocumentXmlDocument
-
Fixed NullReferenceExceptionNullReferenceExceptionNullReferenceException when using
fn:data()
caused by XmlDocumentXmlDocumentXmlDocument returning an IXmlSchemaInfoIXmlSchemaInfoIXmlSchemaInfo instance with null SchemaTypeSchemaTypeSchemaType. -
Fixed infinite loop caused by an XPathNodeIteratorXPathNodeIteratorXPathNodeIterator over XmlDocumentXmlDocumentXmlDocuments not consistantly returning
false
after the end of the node set. - Fixed the XQuery version declaration for cultures where '.' is not the decimal point.
- Fixed normalization rules of general comparisons as per erratum XQ.E18.
-
Fixed NullReferenceExceptionNullReferenceExceptionNullReferenceException when using
- For increased performance, the command line tool now runs in x86 mode by default.
Version 1.0.1
- First full release.