That's because the name that you specify in a DOCTYPE declaration
must exactly match the (qualified) name that you use for the document
element in the XML document. In your case, you have:
<!DOCTYPE stylesheet ...>
and:
<xsl:stylesheet ...>...</xsl:stylesheet>
"stylesheet" and "xsl:stylesheet" aren't the same, so any XML parser
should object.
No, I don't think so. A *validating* parser should object but a
non-validating parser should be just fine with this. There is no good
reason an XSLT processor should be using a validating parser. There
isn't even a DTD for XSLT, and creating one would be a pointless
exercise since it would depend heavily on the output vocabulary.