If you're working with XSL or a similar technology that makes use of XML namespace prefixes using the Microsoft XML DOM you'll likely run into problems if you try to do anything more than just load in a file.
The W3 DOM specification includes a createElementNS method for creating an element scoped within a namespace however MSXML doesn't. You can create an element with a prefix using createElement but this doesn't correctly register the namespace of the node and you'll get a schema error something like:
msxml3.dll: Keyword xsl:stylesheet may not contain xsl:include.
In order to create an element and register it correctly you have to use createNode instead which takes node type (1 for an element), node name and namespace URI as arguments e.g.
Set ndIncl = xslDoc.createNode(1, "xsl:include", "http://www.w3.org/1999/XSL/Transform")
Similar to the createElement problem, even if you've only loaded an XSL document you won't be able to use XPath to query it because oddly the namespaces aren't automatically registered with XPath e.g.
Set nlTemps = xslDoc.documentElement.selectNodes("/xsl:stylesheet/xsl:template")
yields the following error:
msxml3.dll: Reference to undeclared namespace prefix: 'xsl'.
To get this to play ball you have to set the "SelectionNamespaces" second-level property which takes a space delimited list of namespace definitions using a setProperty call of the form:
xslDoc.setProperty "SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"