in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

link da tag xml

Ultimo messaggio ricevuto il 03-05-2006 22.51 da theFool. 3 risposta(e).
Pagina 1 di 1 (4 elemento/i)
Ordina messaggi: Precedente Successivo
  • 02-05-2006 21.00

    • andrevu
    • Utente Top 500
    • Registrato il 27-04-2006
    • Jesi
    • Messaggi 2

    link da tag xml

        Salve a tutti. Ho un documento XML del tipo
        <doc>
              <item>
                      <titolo>Titolo</titolo>
                      <cont>Contenuto</cont>
                      <link>http://www.link.com</link>
               </item>
        </doc>


    Quello che vorrei fare è utilizzare un XSL per trasformare l'XML in HTML, facendo in modo che il link diventi effettivaemente un link che punta all'indirizzo contenuto tra i tag <link>.. Non so se sono stato chiaro...
    Grazie in anticipo a tutti!!!
    • Log
  • 03-05-2006 11.40 In risposta a

    • theFool
    • Utente Top 10
    • Registrato il 13-07-2005
    • Piacenza
    • Messaggi 127

    Smile [:)] Re: link da tag xml

    Ciao,
    ti mostro come fare con un semplice esempio:

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="
    http://www.w3.org/1999/XSL/Transform" version="1.0">
     <xsl:template match="/">
      <html>
       <body>
        <h2>
         <xsl:value-of select="//titolo"/>
        </h2>
        <i>
         <xsl:value-of select="//cont"/>
        </i>
        <br/>
        <a>
         <xsl:attribute name="href">
          <xsl:value-of select="//link"/>
         </xsl:attribute>
         apri
        </a>
       </body>
      </html>
     </xsl:template>
    </xsl:stylesheet>

    (Salva il file nella stessa cartella del documento xml, chiamandolo: doc.xsl)

    Infine per ottenere la trasformazione automaticamente, devi modificare il documento xml originale in questo modo:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="doc.xsl"?>
    <doc>
     <item>
      <titolo>Titolo</titolo>
      <cont>Contenuto</cont>
      <link>http://www.link.com</link>
     </item>
    </doc>

    Premesso che la prima riga (detta prologo xml) è sempre necessaria in tutti i documenti xml (cfr anche il documento xsl), è invece la seconda che richiede la trasformazione vera e propria; per verificarla ti è sufficiente aprire il documento xml con IE 5.5+.
    Il browser visualizza correttamente il documento xml trasformato, tuttavia se richiedi il sorgente noterai che non ti viene proposto l'output della trasformazione bensì il documento xml originale: questo perchè la trasformazione -in questo caso- avviene in memoria.

    Ciao ciao

    • Log
  • 03-05-2006 14.05 In risposta a

    • andrevu
    • Utente Top 500
    • Registrato il 27-04-2006
    • Jesi
    • Messaggi 2

    Big Smile [:D] Re: link da tag xml

    Sei un mago!!!
    Grazie 1000, anche per le spiegazioni sul prologo e sul sorgente!!!
    Vista la rapidità, la disponibilità e la competenza... Se avrò bisogno di altro... chiederò Big Smile [:D]
    Ciao
    • Log
  • 03-05-2006 22.51 In risposta a

    • theFool
    • Utente Top 10
    • Registrato il 13-07-2005
    • Piacenza
    • Messaggi 127

    Wink [;)] Re: link da tag xml

    Ciao,
    a fronte dei tuoi lusinghieri complimenti, diventa quasi un obbligo concludere il discorso mostrandoti come sia possibile ottenere l'output della trasformazione in un file:

    Dim xmlDoc, xslDoc , fso , txt

    Set xmlDoc = getDocument("doc.xml")
    Set xslDoc = getDocument("doc.xsl")

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set txt = fso.createTextFile( "doc.html" )
    With txt
     .Write xmlDoc.transformNode( xslDoc.documentElement )
     .Close
    End With

    Set txt = Nothing
    Set fso = Nothing

    Set xslDoc = Nothing
    Set xmlDoc = Nothing

    WScript.Echo "fatto!"


    Function getDocument( cNomefile )
     Set getDocument = CreateObject("MSXML.DomDocument")
     With getDocument
      .Async = false
      .Load cNomefile
     End With
    End Function

    Questo breve script (doc.vbs) carica i due documenti (doc.xml e doc.xsl), ed effettua la trasformazione salvandone il risultato in un file creato all'uopo (doc.html).

    Tale approccio rivela tutta la sua utilità soprattutto durante la fase di debug, per verificare quale sia effettivamente l'output prodotto dalla trasformazione.

    Infine, con poche modifiche, è possibile utilizzare la stessa tecnica anche da ASP:

    <%
    Dim xmlDoc, xslDoc , fso , txt

    Set xmlDoc = getDocument("doc.xml")
    Set xslDoc = getDocument("doc.xsl")

    Response.Write xmlDoc.transformNode( xslDoc.documentElement )

    Set xslDoc = Nothing
    Set xmlDoc = Nothing


    Function getDocument( cNomefile )
     Set getDocument = Server.CreateObject("MSXML.FreeThreadedDomDocument")
     With getDocument
      .Async = false
      .Load Server.MapPath( cNomefile )
     End With
    End Function

    %>

    In questo ultimo caso l'esito della trasformazione viene inviato direttamente all'oggetto Response, ovvero il canale di comunicazione dal server al client; così facendo il browser riceve un flusso-dati html in quanto la trasformazione viene attuata dal server.

     

    Ciao ciao

    • Log
Pagina 1 di 1 (4 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4158/4647.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"