From: Gregoor, Van Der Eyken (geyken@esual.com)
Date: 28/05/2002 - 10:51
Bonjour à tous,
Je suis confronté de nouveau à un problème de chargement de données Xml en Asp, cela m'est en effet déjà arrivé mais les réponses fournies la dernière fois ne suffisent plus :
D'une part je travaille sur mon serveur local
D'autre part je n'ai une faible quantité d'informations à charger.
J'ai pourtant joué avec la propriété async, l'évènement readystatechange pour attendre (valeur 4) que les données soit toutes arrivées. Je charge même le contenu Xsl avant Xml (pour être sûr de ne pas attendre la fin du process).
toujours un message d'erreur
-The stylesheet does not contain a document element. The stylesheet may be empty, or it may not be a well-formed XML document.
quand async est false
Sub loadTransformer()
'chargement de l'Url Xsl de formattage, création du processeur Xsl
m_oXmlTransformer.async=false
m_oXmlTransformer.load(CS_URLXSLESUAL)
Set m_oXslTemp.stylesheet=m_oXmlTransformer
Set m_oXslProc=m_oXslTemp.createProcessor()
End Sub
Sub loadData()
'création de l'Url renvoyé par Brio comprenant les paràmètres
Dim m_sUrlFinalBrio
m_sUrlFinalBrio=CS_URLXMLBRIO&Request.QueryString
'chargement de l'Url Brio comprendant les paramètres
m_oXmlData.async=false
m_oXmlData.load(m_sUrlFinalBrio)
End Sub
The data necessary to complete this operation is not yet available.
quand async est true
dans ce cas je passe par m_oXmlTransformer_onreadystatechange() (d'après msdn c'est l'évènement implicitement appelé à chaque changement d'état)
Sub m_oXmlTransformer_onreadystatechange()
Dim iErr
'debug : Response.Write("m_oXmlData "&m_oXmlData.readyState&" m_oXmlTransformer "&m_oXmlTransformer.readyState)
If m_oXmlTransformer.readyState = 4 then
loadData()
End If
End Sub
Merci beaucoup, j'aimerais surtout comprendre pourquoi un tel comportement est différent qu'en interprétation cliente JScript (même objets et méthodes) qui marche sans aucun problème.
Gregoor
Code intégral
<%
'Url Xml Brio
Const CS_URLXMLBRIO="http://localhost/support/brio/test1.xml"
'Url Xsl de transformation de Brio pour esual
Const CS_URLXSLESUAL="http://localhost/support/brio/BrioInventoryAnalysisELM_20020528.xsl"
'concerne les objets Xml membres
Set m_oXmlData=Server.CreateObject("Msxml2.DOMdocument.4.0")
Set m_oXmlTransformer=Server.CreateObject("Msxml2.FreeThreadedDOMDocument.4.0")
Set m_oXslTemp=Server.CreateObject("MSXML2.XSLTemplate.4.0")
Dim m_oXslProc
loadTransformer()
'charge le transformateur Xsl esual
Sub loadTransformer()
'chargement de l'Url Xsl de formattage, création du processeur Xsl
m_oXmlTransformer.async=true
m_oXmlTransformer.load(CS_URLXSLESUAL)
Set m_oXslTemp.stylesheet=m_oXmlTransformer
Set m_oXslProc=m_oXslTemp.createProcessor()
End Sub
'charge le flux Xml de données Brio
Sub loadData()
'création de l'Url renvoyé par Brio comprenant les paràmètres
Dim m_sUrlFinalBrio
m_sUrlFinalBrio=CS_URLXMLBRIO&Request.QueryString
'chargement de l'Url Brio comprendant les paramètres
m_oXmlData.async=true
m_oXmlData.load(m_sUrlFinalBrio)
End Sub
'lorsqu'il y a changement d'état de m_oXmlData, test pour voir si les données sont prêtes, si oui alors transformation
Sub m_oXmlData_onreadystatechange()
Dim iErr
'debug : Response.Write("m_oXmlData "&m_oXmlData.readyState&" m_oXmlTransformer "&m_oXmlTransformer.readyState)
If m_oXmlData.readyState = 4 then
iErr= m_oXmlData.parseError
If iErr.errorCode <> 0 then
'debug : Response.Write(iErr.reason&"<br/>")
Response.Write(iErr.reason&"<br/>")
m_oXslTemp.input=m_oXmlData
m_oXslTemp.output=Response
m_oXslTemp.transform
Else
'debug : Response.Write("success"&"<br/>")
End If
End If
End Sub
'lorsqu'il y a changement d'état de m_oXmlTransformer, test pour voir si les données sont prêtes, si oui alors chargement des données Xml
Sub m_oXmlTransformer_onreadystatechange()
Dim iErr
'debug : Response.Write("m_oXmlData "&m_oXmlData.readyState&" m_oXmlTransformer "&m_oXmlTransformer.readyState)
If m_oXmlTransformer.readyState = 4 then
loadData()
End If
End Sub
%>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|