如何使MSXML DOMDocument.selectSingleNode使用命名空间

时间:2011-06-29 08:25:29

标签: xml xpath asp-classic

我有MSXMLDOMDocument的经典ASP环境。加载的xml是xsl:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
  xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes"
  exclude-result-prefixes="xhtml xsl fn xs xdt">

</xsl:stylesheet>

我正在尝试获取样式表的版本,在此示例中,这是值&#34; 2.0&#34;。 我想在这个purpouse中使用XPath,但我的问题是我不知道如何在经典的asp中将xsl的命名空间添加到xpath引擎。

问题:如何在经典asp中使用MSXMLDOMDocument获取xsl:stylesheet的version属性?

1 个答案:

答案 0 :(得分:2)

AFAIR,有一种注册命名空间的方法,因此您可以在XPath表达式中使用已注册的前缀。

但是,在您的情况下,这不是必要的

只需使用:

/*/@version

这里我们使用xsl:stylesheet是XML文档的顶级元素(并且任何格式良好的XML文档必须只有一个顶部元素)的事实 - 所以我们可以如上所述指定这个顶部元素 - - 根本不指定其名称。

我们不需要为version属性指定任何名称空间,因为在XPath中,任何未加前缀的属性名称都在“无名称空间”中,即使存在为XML文档定义的默认名称空间。