2.2.7 [W3C-XSLT] Section 7.1.3, Creating Attributes with xsl : attribute

C0006:

The specification states:

 The name attribute is interpreted as an attribute value template. It is an error if
 the string that results from instantiating the attribute value template is not a
 QName or is the string xmlns. An XSLT processor may signal the error; if it does
 not signal the error, it must recover by not adding the attribute to the result
 tree.

MSXML3 and MSXML6

An error is signaled when the string that results from instantiating the attribute value template is not a QName or is the string xmlns.

C0007:

The specification states:

 XSLT processors may make use of the prefix of the QName specified in the name 
 attribute when selecting the prefix used for outputting the created attribute as 
 XML; however, they are not required to do so and, if the prefix is xmlns, 
 they must not do so. Thus, although it is not an error to do:
 <xsl:attribute name="xmlns:xsl" namespace="whatever">http://www.w3.org/1999/XSL/Transform</xsl:attribute>
  
 it will not result in a namespace declaration being output.

MSXML3 and MSXML6

A new prefix for the namespace is automatically generated.

C0008:

The specification states:

 The following are all errors:
  
     • Adding an attribute to an element after children have been added to it; 
 implementations may either signal the error or ignore the attribute.
  
     • Adding an attribute to a node that is not an element; implementations may
 either signal the error or ignore the attribute.
  
     • Creating nodes other than text nodes during the instantiation of the content
of the xsl:attribute element; implementations may either signal the error or
ignore the offending nodes.

MSXML3 and MSXML6

No error is signaled. Instead, any attribute added to an element after children have been added to it is ignored. Likewise, any node created other than text nodes during the instantiation of the content of the xsl:attribute element is ignored.