1) I wouldn't call it pre-defined. It's just that what you think of as "xsl:stylesheet" is really "http://www.w3.org/1999/XSL/Transform:stylesheet". If you change even one character then you have changed the element name. You can, however, do this
Code:
<foo:stylesheet xmlns:foo="http://www.w3.org/1999/XSL/Transform">
2) Namespaces aren't checked and there is no requirement that they actually point to anything. They are only used as a unique identifier.
“The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.”
—Tim Berners-Lee, W3C Director and inventor of the World Wide Web
Bookmarks