<% ' Map Viewer (Third Edition) by Howie Sternberg at howies@snet.net. ' Map Viewer is placed in the public domain and is "Freeware". ' Map Viewer may be freely used and redistributed, is provided "AS-IS" ' without warranty of any kind, and there is no technical support provided. ' ----------------------- ' Transform XML Functions ' ----------------------- Function setFullPath(sBelowPath) ' Return absolute path of child folder or file below current directory Dim sAbovePath ' Directory path (string) Dim i ' Count position of right most \ in path sAbovePath = Request.ServerVariables("PATH_TRANSLATED") i = InStrRev(sAbovePath, "\") sAbovePath = Left(sAbovePath,i) setFullPath = sAbovePath & sBelowPath End Function Function transformXMLfromFile(sXML,sXSL) ' Return transformation of file-based XML document using XSLT stylesheet file Dim objXML Dim objXSL Dim sErrorMsg Dim sErrorXSL sXML = setFullPath(sXML) sErrorXSL = setFullPath("xsl\error.xsl") sXSL = setFullPath(sXSL) Set objXML = Server.CreateObject("Msxml2.DOMDocument") objXML.async = false objXML.validateOnParse = false objXML.preserveWhiteSpace = false objXML.load(sXML) Set objXSL = Server.CreateObject("Msxml2.DOMDocument") objXSL.async = false objXSL.validateOnParse = false objXSL.preserveWhiteSpace = false objXSL.load(sErrorXSL) sErrorMsg = objXML.transformNode(objXSL) If (Len(sErrorMsg) = 0) Then objXSL.load(sXSL) transformXMLfromFile = objXML.transformNode(objXSL) Set objXML = nothing Set objXSL = nothing Else Set objXML = nothing Set objXSL = nothing Response.Write sErrorMsg Response.End End If End Function Function transformXMLfromFileWithParameters(sXML,sXSL,aXSLParams) ' Return transformation of file-based XML document with dynamic XSLT stylesheet that receives parameters Dim i Dim objXML Dim objXSL Dim objTemplate Dim objProcessor Dim sErrorMsg Dim sErrorXSL sXML = setFullPath(sXML) sErrorXSL = setFullPath("xsl\error.xsl") sXSL = setFullPath(sXSL) Set objXML = Server.CreateObject("Msxml2.DOMDocument") objXML.async = true objXML.validateOnParse = false objXML.preserveWhiteSpace = false objXML.load(sXML) Set objXSL = Server.CreateObject("Msxml2.FreeThreadedDOMDocument") objXSL.async = false objXSL.validateOnParse = false objXSL.preserveWhiteSpace = false objXSL.load(sErrorXSL) sErrorMsg = objXML.transformNode(objXSL) If (Len(sErrorMsg) = 0) Then objXSL.load(sXSL) Set objTemplate = Server.CreateObject("Msxml2.XSLTemplate") objTemplate.stylesheet = objXSL Set objProcessor = objTemplate.createProcessor() objProcessor.input = objXML For i = 0 to Ubound(aXSLParams) objProcessor.addParameter aXSLParams(i)(0), aXSLParams(i)(1) Next objProcessor.transform() transformXMLfromFileWithParameters = objProcessor.output Set objXML = nothing Set objXSL = nothing Set objTemplate = nothing Set objProcessor = nothing Else Set objXML = nothing Set objXSL = nothing transformXMLfromFileWithParameters = sErrorMsg End If End Function Function transformXML(sXML,sXSL) ' Return transformation of XML (ArcIMS response) document using XSLT stylesheet file Dim objXML Dim objXSL Dim sErrorMsg Dim sErrorXSL sErrorXSL = setFullPath("xsl\error.xsl") sXSL = setFullPath(sXSL) Set objXML = Server.CreateObject("Msxml2.DOMDocument") objXML.async = false objXML.validateOnParse = false objXML.preserveWhiteSpace = false objXML.LoadXML(sXML) Set objXSL = Server.CreateObject("Msxml2.DOMDocument") objXSL.async = false objXSL.validateOnParse = false objXSL.preserveWhiteSpace = false objXSL.load(sErrorXSL) sErrorMsg = objXML.transformNode(objXSL) If (Len(sErrorMsg) = 0) Then objXSL.load(sXSL) transformXML = objXML.transformNode(objXSL) Set objXML = nothing Set objXSL = nothing Else Set objXML = nothing Set objXSL = nothing Response.Write sErrorMsg Response.End End If End Function Function transformXMLWithParameters(sXML,sXSL,aXSLParams) ' Return transformation of XML (ArcIMS response) document with dynamic XSLT stylesheet that receives parameters Dim i Dim objXML Dim objXSL Dim objTemplate Dim objProcessor Dim sErrorMsg Dim sErrorXSL sErrorXSL = setFullPath("xsl\error.xsl") sXSL = setFullPath(sXSL) Set objXML = Server.CreateObject("Msxml2.DOMDocument") objXML.async = true objXML.validateOnParse = false objXML.preserveWhiteSpace = false objXML.LoadXML(sXML) Set objXSL = Server.CreateObject("Msxml2.FreeThreadedDOMDocument") objXSL.async = false objXSL.validateOnParse = false objXSL.preserveWhiteSpace = false objXSL.load(sErrorXSL) sErrorMsg = objXML.transformNode(objXSL) If (Len(sErrorMsg) = 0) Then objXSL.load(sXSL) Set objTemplate = Server.CreateObject("Msxml2.XSLTemplate") objTemplate.stylesheet = objXSL Set objProcessor = objTemplate.createProcessor() objProcessor.input = objXML For i = 0 to Ubound(aXSLParams) objProcessor.addParameter aXSLParams(i)(0), aXSLParams(i)(1) Next objProcessor.transform() transformXMLWithParameters = objProcessor.output Set objXML = nothing Set objXSL = nothing Set objTemplate = nothing Set objProcessor = nothing Else Set objXML = nothing Set objXSL = nothing transformXMLWithParameters = sErrorMsg End If End Function %>