Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    2

    XSL- Formattare un testo con tag

    Ciao, ho un problema nel formattare un file xml in html. La situazione è questa: all'interno di un tag <DESCRIPTION> sono presenti degli altri tag che mi vanno a definire del testo in bold [B], sottolineato <U>, ecc. Ora come ora ho creato una porzione di codice xsl che mi trasforma questi tag in tag html e il testo all'interno me lo fa diventare nel corrispondente stile. Il problema viene quando all'interno di un tag ce ne sono degli altri, come in questa situazione: <U>Misto</U> e allora mi trasforma solamente quello più esterno. Posto il codice che ho scritto.

    codice:
    <xsl:template match="DESCRIPTION">
            <xsl:for-each select="text()|B|I|U|BR|ALIGN[@value='justify']|ALIGN[@value='left']|ALIGN[@value='center']|ALIGN[@value='rigth']">
                <xsl:apply-templates select="."/>
            </xsl:for-each>
        </xsl:template>
        <xsl:template match="text()">
            <xsl:value-of select="."/>
        </xsl:template>
        <xsl:template match="B">
            <xsl:value-of select="."/>
        </xsl:template>
        <xsl:template match="I">
            <xsl:value-of select="."/>
        </xsl:template>    
        <xsl:template match="U">
            <u><xsl:value-of select="."/></u>
        </xsl:template>
        <xsl:template match="BR">
            
    
        </xsl:template>
        <xsl:template match="ALIGN[@value='justify']">
            <span style="text-align:justify"><xsl:value-of select="." /></span>
        </xsl:template>    
        <xsl:template match="ALIGN[@value='left']">
            <span style="text-align:left"><xsl:value-of select="." /></span>
        </xsl:template>    
        <xsl:template match="ALIGN[@value='center']">
            <span style="text-align:center"><xsl:value-of select="." /></span>
        </xsl:template>    
        <xsl:template match="ALIGN[@value='rigth']">
            <span style="text-align:rigth"><xsl:value-of select="." /></span>
        </xsl:template>
    Spero di essere stato abbastanza chiaro.

  2. #2
    non ha senso che fai <xsl:for-each> e poi usi <xsl:apply-templates>


    il metodo corretto (lo leggi su qualunque manuale di xsl) è questo:

    <xsl:template match="bodytext">
    <xsl:apply-templates />
    </xsl:template>

    <xsl:template match="B">
    <xsl:apply-templates />
    </xsl:template>

    e cosi' via...
    puoi anche non scrivere il template di default (ovvero quello che copia proprio il contenuto finale) perche' in quasi tutti i parser c'e' sempre un template match di default che viene applicato quando non esiste un matching alternativo che non fa nient'altro che un value-of del il contenuto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    2
    Grazie mille per l'aiuto,ho risolto ogni problema.

  4. #4
    Originariamente inviato da pippar
    Grazie mille per l'aiuto,ho risolto ogni problema.
    spero anche grazie a quello che ho scritto ))

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.