一般的windows環境(Windows 98 se以上版本)都有一個msXML環境,以下的ASP代碼可以運行,但不一定工作,不工作可能是由於樣式單是http://www.w3.org/1999/xsl/transform的,而最初環境只支持http://www.w3.org/tr/wd-xsl,所以可能什麼也不出來。
<%@ language = JScript %>
<
// set the source and style sheet locations here
var sourcefile = server.mappath("test.XML");
var stylefile = server.mappath("test.xsl");
// load the XML
var source = server.createobject("microsoft.XMLdom");
source.async = false;
source.load(sourcefile);
// load the xsl
var style = server.createobject("microsoft.XMLdom");
style.async = false;
style.load(stylefile);
response.write(source.transformnode(style));
%>
一般以msxml為開發環境的都要建立安裝新的解析器,如msxml 3或者msXML 4 technology prevIEw,
在以replace方式裝了msXML 3後,我們可以使用以下的代碼
<%@ language = JScript %>
<
// set the source and style sheet locations here
var sourcefile = server.mappath("test.XML");
var stylefile = server.mappath("test.xsl");
// load the XML
var source = server.createobject("msXML2.domdocument");
source.async = false;
source.load(sourcefile);
// load the xsl
var style = server.createobject("msXML2.domdocument");
style.async = false;
style.load(stylefile);
response.write(source.transformnode(style));
%>
這樣我們獲得了msxml 3的開發環境,但如果我們不想破壞原來的環境,又要測試我們基於msXML 3的例子呢,雖然用replace方式安裝提供了向後兼容方式來支持xsl元素,函數和xsl命名空間。
其實使用版本無關progids(version-dependent progids)來創建對象實例可以更好的完成工作,我們不需要用replace方式安裝,用side-by-side方式即可,我們看下面的代碼:
<@ language = JScript %>
<
// set the source and style sheet locations here
var sourcefile = server.mappath("test.XML");
var stylefile = server.mappath("test.xsl");
// load the XML
var source = server.createobject("msXML2.domdocument.3.0");
source.async = false;
source.load(sourcefile);
// load the xsl
var style = server.createobject("msXML2.domdocument.3.0");
style.async = false;
style.load(stylefile);
response.write(source.transformnode(style));
%>
只需要在msxml2.domdocument後面加上版本號3.0,即可使用msxml 3的東東了,msXML 4呢,依次類推。
在客戶端的環境也是一樣的,用JS創建dom對象是一樣的。
function test(){
var xmldoc = new activexobject("msXML2.domdocument.3.0");
var currnode;
XMLdoc.async = false;
xmldoc.load("test.XML");
currnode = XMLdoc.documentelement.firstchild;
alert(currnode.XML);
}
最後,xslt樣式單side-by-side方式下在internet explorer 5.0及以後版本不支持。如果你要使用IE 5來打開xslt樣式單,需要用replace方式安裝。