Ciao a tutti,
ho la necessità di fare un sito multilingua. Per questo ho deciso di utilizare ASP 3.0 + XML 1.0. Ma come faccio per estrarre la riga della traduzione dal file XML e visualizzarla?
Ciao a tutti,
ho la necessità di fare un sito multilingua. Per questo ho deciso di utilizare ASP 3.0 + XML 1.0. Ma come faccio per estrarre la riga della traduzione dal file XML e visualizzarla?
Troppo generico.
Il file xml dove sta?
Comunque, lo puoi leggere con l'oggetto XMLDOM o con XPATH
grazie della risposta. Vorrei utilizzare Dom e il file xml sta in una cartella. E' strutturato così:
<traduzione_prodotto>
<lingua name="IT">
<traduzione name="testo_01"></traduzione>
</lingua>
</traduzione_prodotto>
codice:xmlFile = server.mapPath("/cartella/lang.xml") set objXml = server.createObject("Microsoft.XMLDOM") objXml.async = "false" objXml.load(xmlFile) function getValueByLabel(theLang,theApp) set node = objXml.selectNodes("//traduzione_prodotto/lingua[@name=""" & theLang & """]/traduzione[@name=""" & theApp & """]") if node.length = 0 then call getValueByLabel("IT",theApp) for i = 0 to node.length - 1 response.write node(i).selectSingleNode("value").text next set node = nothing end function call getValueByLabel("IT","testo_01") set objXml = nothing' su questo flusso xml
<traduzione_prodotto>
<lingua name="IT">
<traduzione name="testo_01">
<value><![CDATA[testo testo testo]]></value>
</traduzione>
</lingua>
</traduzione_prodotto>
mi dà errore: Out of memory sulla riga:
set node = XMLObject.selectNodes("//traduzione_prodotto/lingua[@name=""" & theLang & """]/traduzione[@name=""" & theApp & """]")
A me l'esempio postato funziona.
ecco quello che ho fatto:
Richiamo la funzione con <%call getValueByLabel(strLinguaBreve,"testo_01")%>codice:'Inizializzo il parser XML Set XMLObject = Server.CreateObject("Microsoft.XMLDOM") XMLObject.async = "false" XMLObject.Load(Server.MapPath("lingua/" & strSessioneLingua & ".xml")) 'Creo la funzione necessaria per estrarre il testo della lingua selezionata Function getValueByLabel(theLang, theApp) Set node = XMLObject.SelectNodes("//traduzione_prodotto/lingua[@name=""" & theLang & """]/traduzione[@name=""" & theApp & """]") if node.length = 0 then call getValueByLabel(strLinguaBreve, theApp) for i = 0 to node.length - 1 response.write node(i).selectSingleNode("value").text next Set node = Nothing End Function Set XMLObject = Nothing
per caso il file deve essere dentro una cartella speciale? Me lo fà su qualsiasi pagina con questa funzione...
Assicurati che strLinguaBreve contenga qualcosa.
Fai un response.write di questa variabile.
Nel tuo caso il file xml sembra che debba stare dentro la cartella lingua che sta allo stesso livello della pagina che lo richiama.
ho provato il codice originale tuo senza nessuna modifica e non funziona lo stesso...![]()