在ASP中加载XSL转换文件

时间:2013-06-18 21:16:24

标签: asp.net xml xslt asp-classic

民众......这是一个经过编辑的版本,最初是作为“经典ASP”问题发布的。它基本上是ASP代码但是在ASPX文件中并且格式化以满足ASPX规则,即没有“Set”语句等。但是,如在ASPX文件中编码的那样,一些人反对将其称为“经典ASP”。好吧,问题仍然存在,当我尝试加载XSL转换来对XLM进行排序时,我在页面中做错了什么?...

我正在尝试加载XSL转换文件以使用ASP对我的XML文件进行排序。页面的其余部分正在处理XML文件,但由于原因我无法确定它似乎拒绝加载,甚至看不到我的XSL转换文件。我知道文件在那里,因为我可以在浏览器中输入URL,它将显示,我也可以使用“Scripting.FileSystemObject”来检索和输出文本。这是我的XSL文件。

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/Sensors" >
        <xsl:copy>
            <xsl:apply-templates select="sensor">
                <xsl:sort select="@location"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="sensor">
        <xsl:copy>
            <xsl:apply-templates select="@*" />
            <xsl:apply-templates select="reading">
                <xsl:sort select="@label"/>
            </xsl:apply-templates>
        </xsl:copy>
   </xsl:template>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>   

在下面的代码中,我输出XLM字符串两次:在最初加载(XMLDOC.text)之后,然后在转换之后(XSLT.text)。我还从xsl文件(XSLDOC.text)的加载输出字符串,但它始终为空。 XMLDOC.text和XSLT.text输出完全相同。

FileName = Server.MapPath("/" & "Sandbox/WeatherXLM.xml")   
xmlDoc = CreateObject("Microsoft.XMLDOM")
xmldoc.setProperty ("ServerHTTPRequest", true)
xmlDoc.setProperty ("ProhibitDTD", False)
xmlDoc.setProperty ("SelectionLanguage", "XPath")   
xmlDoc.validateOnParse = true
xmlDoc.async = "False"
xmlDoc.load(FileName)
    Select Case xmlDoc.parseError.errorCode
    Case 0 
                strResult = "Valid: " & FileName & vbCr
    Case Else
                strResult = vbCrLf & "ERROR! Failed to validate " & _
                FileName & vbCrLf & xmlDoc.parseError.reason & vbCr & _
            "Error code: " & xmlDoc.parseError.errorCode & ", Line: " & _
                       xmlDoc.parseError.line & ", Character: " & _
                       xmlDoc.parseError.linepos & ", Source: " & _
                       Chr(34) & xmlDoc.parseError.srcText & _
                       Chr(34) & " - " & Now & vbCrLf
        response.write ("<p>" & strResult & "</p>")
        End Select
response.write("<p> -->" & xmlDoc.text & "<-- </p>")
 'Load xls transform file
xslFileName = Server.MapPath("/" & "Sandbox/Sort2.xsl")
xslDoc = CreateObject("Microsoft.XMLDOM")
xslDoc.async = "False"
xslDoc.load(xslfilename)
    Select Case xslDoc.parseError.errorCode
    Case 0 
                strResult = "Valid: " & xslFileName & vbCr
    Case Else
                strResult = vbCrLf & "ERROR! Failed to validate " & _
                xslFileName & vbCrLf & xslDoc.parseError.reason & vbCr & _
            "Error code: " & xslDoc.parseError.errorCode & ", Line: " & _
                       xslDoc.parseError.line & ", Character: " & _
                       xslDoc.parseError.linepos & ", Source: " & _
                       Chr(34) & xslDoc.parseError.srcText & _
                       Chr(34) & " - " & Now & vbCrLf
        response.write ("<p>" & strResult & "</p>")
        End Select
response.write("<p>  2==>" & xslDoc.text & " <== </p>")
 'Transformed XLM and create the tables
xslt = Server.CreateObject("Microsoft.XMLDOM")
xslt.loadxml(xmlDoc.transformNode(xsldoc))
response.write("<p>  3==>" & xslt.text & " <== </p>")
    response.flush
%>

而且,正如我上面所说,页面的其余部分正确处理生成的XLM字符串(XSLT.text)。

我还尝试了其他XML控件(Msxml2.DOMDocument,Msxml2.FreeThreadedDOMDocument),结果相同。我做错了什么?

0 个答案:

没有答案