+ In System.Xml 2.0, XPathNavigator has many editing API (that used to be
+ "XPathEditableNavigator"). It enables developers to edit XmlDocument
+ (not for XPathDocument; it is read-only).
+
+ (In the early stage of .NET 2.0, XPathDocument is supposed to be editable.
+ Also, the new version of editable XPathNavigator had been already
+ implemented in Mono, as Mono.Xml.XPath.XPathEditableDocument.)
+
+
+*** System.Xml.Xsl 2.0
+
+ There used to be System.Xml.Query.XsltCommand class, and it now disappeared
+ and it is said (by Microsoft developers) that there will be a class named
+ XslCompiledTransform - so it will be included in the next beta version.
+ It is regarded as the identical thing to XsltCommand.
+
+ XslCompiledtransform seems almost the same as System.Xml.Xsl.XslTransform,
+ but this class transforms documents twice to four times as fast as
+ XslTransform. Instead, stylesheet compilation is much slower, because
+ it generates compiled stylesheet assembly.
+
+
+
+** External assemblies for Mono 2.0
+
+*** Mono.Xml.Ext
+
+ (<strong>IMPORTANT</strong>: There used to be System.Xml.Query.XQueryCommand
+ class that implemented XQuery, but now Microsoft dropped it for .NET 2.0.
+ So we moved them out to external assembly named Mono.Xml.Ext.dll, but I
+ haven't changed thing so much when I just extracted them. Thus, this
+ section is kept as is, and basically old stuff.)
+
+ Mono.Xml.Ext.dll contains mainly XQuery implementation, and some utility
+ classes.
+
+ XQueryCommand implements XQuery. XQuery is a new face XML document
+ manipulation language (at least new face in .NET world). It is similar
+ to XSLT, but extended to support XML Schema based datatypes (and it is
+ not XML based langauge). It is similar to XPath, but it can construct
+ XML nodes. It has no complicated template resolution, but works like
+ functional languages.
+
+ Under MS.NET, XQuery implementation is mainly in System.Xml.Query and
+ MS.Internal.Xml.* namespaces. The implementation is mostly
+ in System.Xml.dll. It is also true to our System.Xml.dll. Our XQueryCommand
+ in System.Data.SqlXml.dll just invokes the actual XQuery processor
+ (Mono.Xml.XPath2.XQueryCommandImpl) which resides in System.Xml.dll via
+ reflection.
+
+ Currently we are not implementing MS.Internal.Xml.* classes. MS
+ implementation is based on an old version of the W3C specification, and
+ our implementation is currently based on
+ <a href="http://www.w3.org/TR/2004/WD-xquery-20040723/">23 July 2004
+ version</a> (latest as of now) of the working draft.
+
+ XQuery implementation tasks are:
+
+ <ul>
+ * XQuery syntax parser that parses xquery string to AST
+ (abstract syntax tree). -> partly not done.
+
+ * XQuery AST compiler into static context -> partly not done.
+
+ * XQuery (dynamic context) runtime = XQuery expression evaluator
+ + sequence iterator. -> partly not done.
+
+ * XPathItem data model and (mainly) conversion support.
+ -> partly done.
+
+ * Applied expression classes for XQuery/XPath 2.0 functions and
+ operators. -> partly done.
+
+ * Optimization, and design per-query assembly code generator (later)
+ </ul>
+
+ It already handles some queries, while major part implementation is missing
+ or buggy (like FLWOR, expressions for sequence type handling, built-in
+ function support etc.).
+
+
+*** Relax NG and DSDL in Mono 1.2
+
+ Currently we support only RELAX NG as one part of ISO DSDL effort. There
+ is existing Schematron implementation (NMatrix Project: <a
+ href="http://sourceforge.net/projects/dotnetopensrc/">
+ http://sourceforge.net/projects/dotnetopensrc/</a>). With a few changes,
+ it can be used with mono.
+
+ We don't have multi-language based validation support, namely
+ Namespace-based Validation Dispatch Language (NVDL). To support unwrapping,
+ one special XmlReader implementation is required (other schema validation
+ support can be done by ReadSubtree()). Note that we had seen RELAX
+ Namespace, Modular Namespace (MNS) and Namespace Routing Language (NRL)
+ - that is, standardization effort is still ongoing (though NVDL looks
+ mostly the same as NRL).
+
+ In Mono 2.0, there are some improvements:
+
+ <ul>
+ * RelaxngPattern.Compile() now provides error location.
+
+ * RelaxngValidatingReader now supports "expected label
+ collector" API; You can get name list of expected element
+ names and attribute names by simulating validation.
+
+ In Mono 2.0, there might be improvements on Commons.Xml.Relaxng.
+
+ <ul>
+ * The type of error should be kind of RelaxngGrammarException.
+
+ * Right now there is no ambiguity detection implementation that
+ would be useful for RelaxngPattern based xml serialization (if
+ there is need).
+
+ * Because of lack of ambiguity detection, there is no way to
+ provide XmlMapping (XmlTypeMapping/XmlMemberMapping). But
+ If anyone is interested in such effort, integration with
+ XmlSerializer would be interesting task.
+ </ul>