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.