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

    xsl:variable, innerHTML e tag

    [Scusate la lunghezza ma vi spiego quello che vorrei ottenere perchè magari sto proprio sbagliando metodo (sono le prime volte che uso xml/xslt). ]

    Allora... ho un file XML che contiene informazioni su un certo argomento che viene diviso in sottosezioni.
    Le sottosezioni di tipo A sono quelle importanti, quelle di tipo B sono approfondimenti.
    Vorrei fare una cosa di questo tipo: il contenuto delle sottosezioni importanti viene visualizzato interamente, invece per gli approfondimenti ho solo il titolo e cliccandoci sopra si vede tutto.

    Per fare questo vorrei mettere un div per ogni sottosezione e modificarlo utilizzando innerHTML.
    La parte da visualizzare (che alla fine è codice html) viene messa nella variabile appr, il problema è che i tag vengono sostituiti da cose tipo '
' che mi incasinano tutto e quindi ricevo l'errore 'costante string senza terminazione'.

    Come risolvo?

    Il codice è questo:

    --- XML ---

    codice:
    	
    <sezione>
    <sottosez id="5" tipo="A">
    <titolo>Registri</titolo>
    <para>Sono locazioni di memoria interne alla CPU e come tali molto veloci.</para>
    <para>Poiché i registri compendiano tutto lo stato dell’elaborazione di un certo processo</para>
    <para>
    <ul>[*]salvando in memoria tutto il contenuto dei registri è possibile accantonare un processo per passare a svolgerne un altro[*]ripristinando dalla memoria il contenuto di tutti i registri è possibile ripristinare lo stato di un processo accantonatoriprendendone l’esecuzione come se nulla fosse accaduto. Questo consente al sistema operativo di eseguire più compiti allo stesso tempo[/list]</para>
    </sottosez>
    </sezione>
    --- XSLT ---
    codice:
    <xsl:template name="sottosezlink">
      <table width="{$width}" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td class="titolosottosez">
            <div id="approfondimento{@id}">
    	  <xsl:variable name="appr"><xsl:call-template name="approfondimento"><xsl:with-param name="idapp" select="@id"/></xsl:call-template></xsl:variable>		
    					
    	  <xsl:value-of select="titolo"/>			
    	</div>
          </td>
        </tr>
        <tr><td height="20"></td></tr>
      </table>		
    </xsl:template>
    			
    <xsl:template name="approfondimento">
    <xsl:param name="idapp"/>
      <xsl:for-each select="/sezione/sottosez">
        <xsl:if test="@id=$idapp">
          <xsl:call-template name="sottoseztesto"></xsl:call-template>	
        </xsl:if>
      </xsl:for-each>
    </xsl:template>

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    a occhio vedo un paio di cose che non sono molto chiare:

    la parte in grassetto secondo me si dovrebbe rimuovere. Poi non capisco perché usi il metodo innerHTML sull'onclick. quel metodo serve per scrivere dentro un elemento, ma nel tuo caso tu dovresti inserire l'html già direttamente con la trasformazione all'interno di un div nascosto (lì usi una classe e i css)

    l'onclick a quel punto serve solo per richiamare una funzione che mostra/nasconde il div relativo (lì usi l'id del div dovendo gestire un div per volta)



    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Non ho capito perchè la dovrei rimuovere, se la tolgo quando clicco sul titolo ritorno all'inizio della pagina, io invece voglio che rimanga lì...

    Per il div avevo già provato a fare come dici tu, ma se ci scrivo dentro il layer mi occupa spazio anche se è nascosto, nel senso che mi viene fuori una cosa così:

    Titolo Sezione 1







    Titolo Sezione 2

    Forse qua però sbaglio a settare qualche proprietà del div... adesso provo a cercare da qualche parte ma se sai come si fa... grazie!

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    lo spazio viene generato perchè probabilmente setti la proprietà visibility. Invece devi usare la proprietà display
    che assumerà valori "block" oppure "none" nel caso di un div

    display: rende il documento come se il blocco non ci fosse
    visibility: nasconde il blocco ma ne mantiene le dimensioni
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Ecco qual era... adesso è a posto!

    Grazie!

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.