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

    (Javascript) DOM per XML

    Salve ragazzi,

    sto cercando di realizzare una pagina xhtml banale partendo dal seguente albero xml, utilizzando il DOM:

    codice:
    <?xml version="1.0" standalone="no"?>
    
    <!DOCTYPE listacd SYSTEM "listaCdXsd.xsd">
    <listacd>
    	<artista>
        	<nome>Stanley Jordan</nome> 
        	<albums>
            	<album>
           			<titolo>Magic Touch</titolo>
                    <anno>1985</anno>
                    <etichetta>Blue Note</etichetta>
                    <durata>59</durata>
                 </album>
                 <album>
                    <titolo>Stolen Moments</titolo>
                    <anno>1991</anno>
                    <etichetta>Blue Note</etichetta>
                    <durata>65</durata>
                 </album>
            </albums>
         </artista>
         <artista>
         	<nome>Nick Drake</nome>
             <albums>
                  <album>
                     <titolo>Pink Moon</titolo>
                     <anno>1972</anno>
                     <etichetta>Island</etichetta>
                     <durata>72</durata>
                  </album>
                  <album>
                     <titolo>Bryter Layter</titolo>
                     <anno>2000</anno>
                     <etichetta>Island</etichetta>
                     <durata>80</durata>
                  </album>
                  <album>
                     <titolo>Five leaves left</titolo>
                     <anno>1970</anno>
                     <etichetta>Island</etichetta>
                     <durata>57</durata>
                  </album>
             </albums>
          </artista>
          <artista>
             <nome>Jeff Buckley</nome>
             <albums>
                  <album>
                     <titolo>Grace</titolo>
                     <anno>1994</anno>
                     <etichetta>Columbia</etichetta>
                     <durata>78</durata>
                  </album>
                  <album>
                     <titolo>Mistery white boy</titolo>
                     <anno>2000</anno>
                     <etichetta>Columbia</etichetta>
                     <durata>60</durata>
                  </album>
             </albums>
          </artista>
          <artista>
          	<nome>Joe Satriani</nome>
            <albums>
                  <album>
                     <titolo>Surfing with the alien</titolo>
                     <anno>1987</anno>
                     <etichetta>Epic</etichetta>
                     <durata>45</durata>
                  </album>
                  <album>
                     <titolo>Not of this earth</titolo>
                     <anno>1988</anno>
                     <etichetta>Relativity</etichetta>
                     <durata>65</durata>
                  </album>
             </albums>
          </artista>
    </listacd>
    poi dunque ho scritto la seguente pagina xhtml con dentro uno script dom banale:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Artisti</title>
    
    <script language="JavaScript" type="text/javascript">
    
    	if(window.ActiveXObject || (document.implempentation && document.implementation.createDocument))
    	{
    		if(window.ActiveXObject)
    		{
    			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    		}
    		else
    		{
    			xmlDoc = document.implementation.createDocument("", "", null);
    		}
    		
    		xmlDoc.async=false;
    		xmlDoc.load("ListaCdXML.xml");
    		
    		var artisti = xmlDoc.getElementsByTagName("nome"); //artisti è un vettore
    		
    		if(artisti.length == 0){alert("niente");}
    		
    		for(var i=0; i<artisti.length; i++)
    		{
    			document.write(artista[i].nodeValue + "
    ");
    		}
    	}
    	
    </script>
    
    </head>
    
    <body>
    
    </body>
    </html>
    Lo script dovrebbe stampare i nomi di tutti gli artisti! Ma la funzione getElementsByTagName non carica nessun elemento nell'array.

    Qualcuno ha suggerimenti?

  2. #2
    cioè ti fa l'alert con scritto niente?
    oppure non ti visualizza niente? son due cose diverse, XML è molto più rigoroso di xhtml, il contenuto non è nel nodeValue ma nel nodeValue dell'elemento testo (sorvolando che dentro il loop avevi scritto artista invece di artisti ... ) :
    codice:
    for(var i=0; i<artisti.length; i++)
        document.write(artisti[i].firstChild.nodeValue + "
    ");
    questo in primisi, secundis ( ) non ho capito perchè perdere tempo e spremere CPU con inutili parsers javascript, quando un XSLT avrebbe fatto in un lampo e senza problemi, via JavaScript, ovvio, ma senza problemi di questo tipo
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    non ho capito perchè perdere tempo e spremere CPU con inutili parsers javascript, quando un XSLT avrebbe fatto in un lampo e senza problemi, via JavaScript, ovvio, ma senza problemi di questo tipo
    Scopi didattici! Oltre alle XSL Transformations devo saper utilizzare il DOM per XML!
    Cmq l'errore stava nella dichiarazione della radice!
    Non mi ero ricordato che il doctype è riservato solo a schemi dtd invece lo schema che adotta il documento istanza è un xsd.

    Praticamente il parserizzatore si bloccava a Doctype e dunque non leggeva il resto dell'albero, radice compresa.

  4. #4
    Originariamente inviato da VincenzoTheBest
    Scopi didattici! Oltre alle XSL Transformations devo saper utilizzare il DOM per XML!
    Cmq l'errore stava nella dichiarazione della radice!
    Non mi ero ricordato che il doctype è riservato solo a schemi dtd invece lo schema che adotta il documento istanza è un xsd.

    Praticamente il parserizzatore si bloccava a Doctype e dunque non leggeva il resto dell'albero, radice compresa.
    si, piu' tutto quello che ho detto io ... perche' il loop con la variabile sbagliata e il nodeValue senza il firstChild non avrebbero prodotto niente.

    Prego
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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 © 2026 vBulletin Solutions, Inc. All rights reserved.