This is MS.NET bug note. I confirmed them with version 1.1.
In this document I refer to OASIS test suite (by test case name).
It is located here:
http://www.oasis-open.org/committees/documents.php?wg_abbrev=xslt
No. 0001
position() handling in predicates is incomplete. For example,
see foo [position() mod 1 > 0] [position() > 3] [2] result
(match_match19, match_match22 and match_match26)
No. 0002
Import precedence resolution on attribute sets are buggy if there are
two imported stylesheets and both of them have identically-named
attribute in the identically-named attribute sets. MS takes the one
from the first stylesheet, but it must be the one from another.
(attribset_attribset_45)
No. 0003
http://www.w3.org/1999/11/REC-xslt-19991116-errata/ E26 says that
attribute sets are combined before use-attribute-set is replaced with
the actual attributes. MS does not conform to this requirement.
(attribset_attribset42)
No. 0004
String variable are not properly compared with strings (at least in
some cases).
(select_select67, select_select68, variable_variable24)
No. 0005
MS.NET misses some kind of whitespaces.
(Text_78273 - Text_78276, Text_78281)
No. 0006
disable-output-escaping is not working when XmlWriter is specified as
output. It affects on almost all output operations such as xsl:text,
xsl:value-of, and so on.
(Text_78308, Text_78311, Text_modified78308, Text_modified78309,
Text_modified78311, output_output03, output_output06, output_output08,
output_output46, output_output61, output_output62, output_output74,
output_output75, Output_84432, Output_84433)
No. 0007
cdata-section-elements is not working when XmlWriter is specified as
output, like disable-output-escaping.
(output_output28 - output_output30, output_output41 - output_output43,
output_output87, output_output88, output_output91 - output_output98,
output_output101 - output_output107, Text_DoeWithCdataInText).
No. 0008
template "match" attribute does not allow variable reference.
(match_match14)
No. 0009
variable references are rejected inside id() function, being said that
"It either has a variable reference or key function."
(idkey_idkey43)
No. 0010
id() does not consider the possibility that the argument might be a
list string of IDs.
(idkey_idkey57)
No. 0011
key() does not handle variable references.
(idkey_idkey18, idkey_idkey50)
No. 0012
If "name" attribute of xsl:attribute is evaluated as to contain ':'
(i.e. CName with non-empty prefix) and no matching xmlns declaration,
MS.NET raises an error.
(attribset_attribset15)
No. 0013
When XslTransform output is XmlWriter (not Stream), document()
function is not working properly.
(copy_copy27, namespace_namespace20, reluri_reluri09 -
reluri_reluri11, XSLTFunctions_Bug76054, XSLTFunctions_Bug76984,
XSLTFunctions_DocumentFuncWithEmptyArg, XSLTFunctions_DocumentInUnion,
XSLTFunctions_DocumentInUnionWithDuplicateNodes,
XSLTFunctions_DocumentFunctionNoArg)
No. 0014
Standard XSLT function unparsed-entity-uri() is not found.
(expression_expression02)
No. 0015
XPath function boolean() treats empty result tree fragment as true.
(XSLTFunctions_BooleanFunction)
No. 0016
If argument QName of element-available() function is expanded to
have null namespace, it must return false. However MS.NET treats
such one as XSLT instruction.
(XSLTFunctions_ElementAvailFunctionTrue)
No. 0017
format-number() does not accept some patterns.
(XSLTFunctions_specialCharInPattern)
Not sure the reason why:
idkey_idkey49
impincl_impincl08
From mdocs_mdocs01 to mdocs_mdocs18
whitespace_whitespace35
Notes:
1. Roman numbering
MS.NET has "Oxford style" which for example converts 99 as
XXXXXXXXXIX. It is not violating XSLT 1.0 spec. However, section
7.7.1 explicitly describes 4 and 9 as iv and ix, so the "strict"
Oxford style violates the spec.
2. Name conflict in variables
If there is a conflict between a template local variable and a
for-each local variable, MS.NET raises an error. It is a spec bug
that does not define the behavior (like "implementation MAY reort
an error ..., or recover ...).
3. Indentation behavior difference
Even if the xsl:output method is "xml", when indent="yes" is
specified, the indentation behavior is different depending on the
passed Transform() outout argument; TextWriter, or XmlTextWriter.
Currently many of ConflictResolution tests comparison give us
different results. We always use XmlTextWriter (which should be sane
for ), but with XmlTextWriter:
XmlTextWriter w = new XmlTextWriter (Console.Out);
w.Formatting = Formatting.Indented;
w.WriteString ("- ");
w.WriteStartElement ("Foo");
w.WriteEndElement ();
gives
1: -
2:
on both MS.NET and Mono, unlike those ConflictResolution tests expect:
1: -
So Microsft must have another writer for XML output, but I don't
think that makes sense (at least it brings inconsistent indentation
behavior).
4. namedtemplate_namedtemplate06
The stylesheet must be rejected due to the restriction described in
the spec 5.7. OASIS test suite currently contains REF_OUT but there
should be no reference output.