2011-06-29 47 views
2

我有MSXMLDOMDocument的經典ASP環境。加載的XML是一個XSL:Howto獲取MSXMLDOMDocument.selectSingleNode使用命名空間

<?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> 

我試圖讓樣式表的版本,在這個例子中就是這個值「2.0」。 我想爲這個purpouse使用XPath,但是我的問題是我不知道如何將xsl的命名空間添加到傳統asp的xpath引擎中。

問題:如何在傳統的asp中使用MSXMLDOMDocument獲取xsl:stylesheet的版本屬性?

+0

好問題,+1。查看我的答案,獲得完整,簡短和簡單的解決方案。還提供了詳細的解釋。 –

回答

2

AFAIR,有一種方法來註冊一個名稱空間,以便您可以在XPath表達式中使用已註冊的前綴。

但是,在你的情況下,這不是必需的

只需使用:

/*/@version 

這裏我們使用的事實,xsl:stylesheet是XML文檔的頂級元素(和任何格式良好的XML文檔必須只有一個頂級元素) - 所以我們可以如上所述指定此頂層元素 - 完全不指定其名稱。

我們不需要爲version屬性指定任何名稱空間,因爲在XPath中,即使存在爲XML文檔定義的默認名稱空間,任何無前綴的屬性名稱都位於「無名稱空間」中。

+0

謝謝,聰明的解決方案。 – MLewi

+0

@MLewi:不客氣。 –