我是xml和xslt的新手。
我使用经典的asp进行网络编码。我在我的网页上使用Windows平台。并在本地计算机ID“localhost / mywebpage”。
今天我尝试使用xslt运行xml文件 但我得到错误
msxml3.dll error '80004005'
Keyword xsl:template may not contain xsl:for-each-group.
下面是我正在运行的代码
xml中的
<Lakes>
<Lake>
<id>1</id>
<Name>Caspian</Name>
<Type>Natyral</Type>
</Lake>
<Lake>
<id>2</id>
<Name>Moreo</Name>
<Type>Glacial</Type>
</Lake>
<Lake>
<id>3</id>
<Name>Sina</Name>
<Type>Artificial</Type>
</Lake>
</Lakes>
在xslt(XSLT 2.0)
中<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each-group select="Lakes/Lake" group-by="Type">
<xsl:result-document href="file{position()}.xml">
<Lakes>
<xsl:copy-of select="current-group()"/>
</Lakes>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
我的asp页面
<%
'load xml
set xml = server.createobject("microsoft.xmldom")
xml.async = false
xml.load(server.mappath("test.xml"))
'load xsl
set xsl = server.createobject("microsoft.xmldom")
xsl.async = false
xsl.load(server.mappath("test.xsl"))
set xdm= server.createobject("msxml2.domdocument")
xdm.async = false
xdm.loadxml(xml.transformnode(xsl))
xdm.save(server.mappath("test_r.xml"))
%>
我需要将xslt1.0升级到xslt2.0吗?
答案 0 :(得分:3)
您需要使用XSLT 2.0处理器;微软没有,所以如果你想使用XSLT 2.0,你需要调查第三方选项,比如AltovaXML http://www.altova.com/altovaxml.html。它的API记录在http://manual.altova.com/AltovaXML/altovaxmlcommunity/index.html?axcom_xslt2.htm。据我所知,这是经典ASP的最佳选择,如果你转向ASP.NET,那么.NET版本的Saxon 9或XmlPrime也可以使用XSLT 2.0处理器。