Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Include xml+xslt in un div

    Salve a tutti,
    in pratica sto cercando di inserire, all'interno di una pagina html contenente un determinato div, dei file xml correttamente formattati con i loro xslt...per far ciò sto usando la seguente:

    Codice PHP:
    <script type="text/javascript">

       function 
    ajaxLoader(url,id)
        {
            if (
    document.getElementById) {
                var 
    = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
                }
                if (
    x)
                    {
                
    x.onreadystatechange = function()
                        {
                    if (
    x.readyState == && x.status == 200)
                            {
                            
    el document.getElementById(id);
                            
    el.innerHTML x.responseText;
                        }
                        }
                    
    x.open("GET"urltrue);
                    
    x.send(null);
                    }
                            
            }

    </script> 
    dico che il primo ad essere visualizzato nel div deve essere il seguente:

    Codice PHP:
    <body onload="ajaxLoader('esercizio01.xml','contenuto')"
    e poi creo i link per potere visualizzare gli xml che voglio:

    Codice PHP:
    [url="javascript:ajaxLoader('esercizio02.xml','contenuto');"]Info del sistema <span class="links_text"></span>[/url
    ed ovviamente il div che li andrà a contenere


    Codice PHP:
    <div id="contenuto"></div

    vengo al problema: i file xml vengono correttamente caricati e visualizzati solo che non vengono formattati tramite il link all'xslt specificato al loro interno, come posso per fargli riconoscere l'xslt???????
    Purtroppo non sono molto bravo con javascript ma cerco di arrampicarmi sugli specchi, se qualcuno volesse darmi una mano gliene sarei grato.

    Grazie

  2. #2
    Per applicare un foglio di stile XSL devi usare transformNode in IE e XSLTProcessor in Firefox e gli altri.

    Fai qualche ricerca, oppure guarda qui: http://www.dcs.bbk.ac.uk/~ptw/teachi...t-2/notes.html

  3. #3
    nel link che mi hai dato ho trovato molto interessante questo:
    Codice PHP:
    var xmlDoc loadXML("periodic-table.xml");
    var 
    stylesheet loadXML("atom-names-table.xsl");
    if (
    moz) {
      var 
    processor = new XSLTProcessor();
      
    processor.importStylesheet(stylesheet);
      var 
    result processor.transformToFragment(xmlDocdocument);
      
    document.getElementById("target3").appendChild(result);
    } else if (
    ie)
      
    document.write(xmlDoc.transformNode(stylesheet)); 
    solo che qui i file xml e xsl sono specificati direttamente all'interno dello script mentre nell'esempio che io ho riportato su, era il link che dava in pasto allo script sia il file xml che l'id del div riscrivendo quindi il div scelto a seconda del link cliccato

    l'ideale sarebbe riuscire attraverso il link a mandare allo script sia il file xml che l'xsl oltre all'id del div ed ottenere la riscrittura del div con il nostro bel xml formattato correttamente
    Io di javascript sono veramente inguaiato se ci fosse qualche anima pia che postasse un possibile codice risolutivo aiuterebbe molte altre persone oltre me che hanno questo problema.

    Grazie

  4. #4
    ragazzi, veramente nessuno ha in mente una possibile soluzione al problema?

  5. #5
    credo che una soluzione possa essere quella di fare un getElementById("id del tag che richiama il file xsl nel file xml") e poi leggersi il valore di quello...

    cmq quando tento di leggere un file da locale con il metodo che hai scritto tu ( anche io sto facendo il progetto di iacs) in internet exploDer mi dice accesso negato! a te no?

  6. #6
    Posto l'esempio di ciò che vorrei fare: http://www.pastatech.it/prova/index.html qui mi carica l'xml ma non l'xslt...infatti non c'è formattazione dell'xlm

    qui invece mi carica la formattazione ma in una pagina html a parte: http://www.pastatech.it/prova/listacd01.html

  7. #7
    Prima di tutto dovrebbe essere un pò modificata la funzione ajaxLoader:
    codice:
       function ajaxLoader(url,id,fn)
        {
            if (document.getElementById) {
                var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
                }
                if (x)
                    {
                x.onreadystatechange = function()
                        {
                    if (x.readyState == 4 && x.status == 200)
                            {
                            if(id) {
                            var el = document.getElementById(id);
                            else el.innerHTML = x.responseText;
                            }
                            if(fn) fn(x);
                        }
                        }
                    x.open("GET", url, true);
                    x.send(null);
                    }
                            
            }
    Ora dovresti essere in grado di fare una cosa del genere:

    Codice PHP:
    function appendXML(id,xml,xsl) {
      
    ajaxLoader(xmlnull, function(xml) {
        
    ajaxLoader(xslnull, function(xsl) {
          if(
    xml.tranformNode)
            
    xml xml.tranformNode(xsl);
          else {
            
    xml = (new XSLTProcessor());
            
    xml.importStylesheet(xsl);
            
    xml xml.transformToFragment(xmldocument);
          }
          
    document.getElementById(id).appendChild(xml);
        })
      })
    }


    <
    body onload="appendXML('contenuto', 'file.xml', 'file.xsl')"
    Spero funzioni

  8. #8
    Non funziona, ho provato a cambiare un po di cose ma non funziona lo stesso...cmq hai azzeccato in pieno il problema, se ho capito bene in pratica ajaxLoader carica l'xml e appendXML gli applica l'xslt....la strada intrapresa è giusta...cmq grazie ancora per la disponibilità...

  9. #9
    Potresti linkare anche questa versione? Magari ne otteniamo fuori qualcosa...

    In quale browser hai provato?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.