Forum Moderators: open
Error:
Runtime error in Microsoft VBScript (0x800A01A8)
Object required.: '[string: "SystemTypes"]'
/mirakel/default.asp, line 153
The error refers to the line "set base = tempDomXML.documentElement.baseName" in the code, see below.
(The string "systemTypes" is the document element name in the XML file that I get when I load the xml object.)
The Code (line 153 marked, almost at the end):
<% @LANGUAGE="VBSCRIPT" %><%
option explicit' för att resultat inte ska cachas
Response.Expires=-1' skapa referens till objektet som sköter kommunikation med XML-servern
dim o
set o = Server.CreateObject("MwebbCOM.MwebbCOM.1")if len(request.querystring) > 0 then
' skicka med lite uppgifter om användaren i transaktionen
' ta först bort parameter css och paramPage från QueryString, annars klagar XML-servern
dim paramCSS, paramPage, remove1, remove2
paramCSS = Request.querystring("css")
paramPage = Request.querystring("page")
remove1 = "css=" + paramCSS
remove2 = "page=" + paramPageo.httpQueryString = Replace(Replace(Request.QueryString, remove1, ""), remove2, "")
else
if Request.QueryString("transform") = "no" then
o.httpQueryString = "ctype=System&cdoc=Types&transform=no"
else
o.httpQueryString = "ctype=System&cdoc=Types"
end if
end ifo.httpRemoteUser = Request.ServerVariables("REMOTE_USER")
o.httpRemoteAddr = Request.ServerVariables("REMOTE_ADDR")' utför transaktionen
o.BeginTransaction' dokumenttyp
'Response.ContentType = o.ContentType' lämpligtvis läggs en kontroll in här som protesterar om
' content-type inte är "text/xml" och sedan avbryterdim clientType
clientType = "PC"
If InStr(Request.ServerVariables("HTTP_UA_OS"), "Windows CE") Then clientType = "PPC"
If InStr(Request.ServerVariables("HTTP_UA_OS"), "PalmPilot") Then clientType = "PPC"
If InStr(Request.ServerVariables("HTTP_UA_OS"), "PalmScape") Then clientType = "PPC"' behandla resultatet
select case o.ContentType' ett xml-dokument
case "text/xml"
'transformera med xsl-mall och skriv till sidan
if not Request.QueryString("transform") = "no" Then
call transform(o.Document)
Response.ContentType = "text/html"
else
Response.Write(o.Document)
Response.ContentType = "text/xml"
end if
' ett html-dokument
case "text/html"
Response.Write(o.Document)' ett text-dokument
case "text/plain"
Response.Write(o.Document)' övriga dokument (bilder mm)
case else
' funkar ej. något fel i com-objektet som gör att binära dokument förstörs
Response.BinaryWrite(o.Document)end select
sub transform(xmlObj)
dim domXML, domXSL, processor, template, chosenCSS, validate
'Dim stmOut
'XML -----------
set domXML = Server.createObject("MSXML2.DOMDocument.5.0")
domXML.async = false
domXML.validateOnParse = true
if paramPage = "settings" then
'statisk sida för inställningar (css)
domXML.load(Server.MapPath("XML/css.xml"))
else
set validate = Server.createObject("MSXML2.DOMDocument.5.0")
validate.async = false
validate.load(Server.MapPath("XML/development.xml"))
if validate.documentElement.selectSingleNode("validateAgainstSchema").text = "yes" then
validateXML xmlObj, domXML
end if
if not domXML.loadXML(xmlObj) Then
response.write("Error loading XML document: " & domXML.parseError.reason & domXML.parseError.line & domXML.parseError.srcText)
End If
end if'XSL -----------------
set domXSL = Server.createObject("MSXML2.FreeThreadedDOMDocument.5.0")
select case clientType
case "PC"
domXSL.load(Server.MapPath("XSL/PC/pc-templates.xsl"))
case "PPC"
domXSL.load(Server.MapPath("XSL/PPC/ppc-templates.xsl"))
end select'XSLTemplate -------------------
Set template = Server.CreateObject("MSXML2.XSLTemplate.5.0")
template.stylesheet = domXSL
set processor = template.createProcessor()
processor.input = domXML'lägg till vald CSS ---------------------
'läs in default CSS
dim defaultCSSxml
set defaultCSSxml = Server.createObject("MSXML2.DOMDocument.5.0")
defaultCSSxml.async = false
defaultCSSxml.load(Server.MapPath("XML/settings.xml"))'Om ingen cookie finns definerad
if Request.Cookies("css") = "" then
Response.Cookies("css") = defaultCSSxml.documentElement.selectSingleNode("defaultCSS").text
Response.Cookies("css").Expires=Date+365
end if
'Om cookie finns
chosenCSS = Request.querystring("css")
if chosenCSS <> "" Then
Response.Cookies("css")= chosenCSS
Response.Cookies("css").Expires=Date+365
end ifchosenCSS = Request.Cookies("css")
processor.addParameter "cssFile", chosenCSS
' transformera och skriv ut -----------------------
processor.transform()
Response.write(processor.output)
'domXSL.transformNode(domXML)end sub
sub validateXML(xmlObj, domXML)
Dim schemaCache, tempDomXML, base
'hämta ut namnet på rootelement från XML, bestämmer vilken XSD som ska användas
set tempDomXML = Server.createObject("MSXML2.DOMDocument.5.0")
tempDomXML.async = false
tempDomXML.validateOnParse = true
tempDomXML.loadXML(xmlObj)
set base = tempDomXML.documentElement.baseName [b]<--- line 153 ----------------- [/b]
Set schemaCache = Server.createObject("MSXML2.XMLSchemaCache.5.0")
schemaCache.Add "http://www.mirakel.nu/xml", server.MapPath("XSD/" + base + ".xsd")'associera XML med scheman
set domXML.schemas = schemaCache
end sub' städa upp
o.CleanUp
set o = nothing
%>
/Gabriel