0

伙计们....这是一个经过编辑的版本,最初是作为“经典 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),结果相同。我究竟做错了什么?

4

0 回答 0