Visualizzazione dei risultati da 1 a 10 su 10

Discussione: problema con xslt

  1. #1

    problema con xslt

    salve,
    ho un problema con un xsl che non riesco a fare funzionare da 3 settimane e ormai non so più dove cercare l'errore. se qualcuno mi potesse dare un indizio sarebbe di molto aiuto.
    questo è il codice del foglio di stile xsl:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xslutput method="xml" indent="yes"/>
    <xsl:template match="/">
    <xsl:element name="smil">
    <xsl:element name="head">
    <xsl:element name="meta">
    <xsl:attribute name="name">
    <xsl:text>title</xsl:text>
    </xsl:attribute>
    <xsl:attribute name="content">
    <xsl:value-of select="html/head/title"/>

    </xsl:attribute>
    </xsl:element>
    <xsl:element name="layout">
    <xsl:element name="region">
    <xsl:attribute name="id">
    <xsl:apply-templates select="html/frameset/framset/frame"/>
    </xsl:attribute>
    </xsl:element>
    <xsl:element name="region">
    <xsl:attribute name="id">
    <xsl:apply-templates select="html/frameset/frameset/frame"/>
    </xsl:attribute>
    </xsl:attribute>
    </xsl:element>
    <xsl:element name="region">
    <xsl:attribute name="id">
    <xsl:value-of select="html/frameset/frame/@name"/>

    </xsl:attribute>
    </xsl:element>
    </xsl:element>
    </xsl:element>
    <xsl:element name="body">
    <xsl:element name="par">
    <xsl:element name="img">
    <xsl:attribute name="src">
    <xsl:value-of select="html/frameset/frame/@src"/>
    </xsl:attribute>
    <xsl:attribute name="region">
    <xsl:value-of select="html/frameset/frame/@name"/>
    </xsl:attribute>
    </xsl:attribute>
    </xsl:element>
    <xsl:element name="audio">
    <xsl:attribute name="src">
    <xsl:value-of select="html/frameset/frameset/frame/@src"/>
    </xsl:attribute>
    <xsl:attribute name="region">
    <xsl:apply-templates select="html/frameset/frameset/frame"/>
    </xsl:attribute>
    </xsl:element>
    <xsl:element name="text">
    <xsl:attribute name="src">
    <xsl:value-of select="html/frameset/frameset/frame/@src"/>
    </xsl:attribute>
    <xsl:attribute name="region">
    <xsl:apply-templates select="html/framset/frameset/frame"/>
    </xsl:attribute>
    </xsl:element>
    </xsl:element>
    </xsl:element>
    </xsl:element>
    </xsl:template>
    <xsl:template match="html/frameset/framset/frame">
    <xsl:if test="@name='media'">
    <xsl:value-of select="@name"/>

    </xsl:if>
    <xsl:if test="@name='text'">
    <xsl:value-of select="@name"/>

    </xsl:if>
    </xsl:template></xsl:stylesheet>

    alcune parti del file le ho cavate perchè erano semplicemente delle creazioni di attributi ed elementi "normali" ovvero senza andare a prendere i valori dal file.
    il mio problema è questo:
    -l'istruzione value-of non mi restituisce il valore dell'attributo richiesto
    -l'istruzione apply-templates con l'attributo select non esegue le operazioni inserite nel template match indicato, senza l'attributo select prende sempre e solo il valore dell'attributo title del file dove deve andare a prendere le informazioni.
    sotto riporto la pagina html da cui devo prendere i dati.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>titolo della pagina html</title>
    <script type="javascript">
    //
    <![CDATA[
    speedup = 1.0;
    function getXMLFile()
    {
    return "sip_vs/sip.xml";
    }
    //]]>
    </script>
    </head>
    <frameset rows="80%,*">
    <frameset cols="30%,*">
    <frame src="daniela_2007_05_16_1_media.html" name="media" />
    <frame src="daniela_2007_05_16_1_text.html" name="text" />
    </frameset>
    <frame src="daniela_2007_05_16_1_thumbn.html" name="tumbnails" />
    </frameset>
    </html>

    grazie anticipatamente per l'aiuto.

    Stefano

  2. #2
    Ciao,
    ho scritto un articoletto sull'uso del template in xslt,
    puoi dargli un'occhiata qui:
    http://mirkoagrati.110mb.com/articol...p&dir=XML_XSLT

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    grazie per i consiglio ma purtroppo non sono riuscito a trovare quale sia l'errore nel mio codice e quindi far funzionare il foglio di stile...

    domanda stupida ma, ormai non so più cosa poter fare: i fogli di stile xsl "funzionano anche per trasformare pagine html in altri formati (tipo altre pagine html o, come nel mio caso, file smil) vero???

    grazie ancora.

  4. #4
    Non penso per l'html,
    perchè non aderisce alla semantica XML e quindi nei tag tipo <img> che sono aperti ma non chiusi avresti degli errori in fase di parsing;
    Dovrebbero lavorare con documenti XHTML.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  5. #5
    usando tidy ho trasformato le pagine html in xhtml ma purtroppo il foglio di stile non viene eseguito correttamente...

  6. #6
    Che tipo di problemi riscontri?
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  7. #7
    quando scrivo
    <xsl:value-of select="html/frameset/frameset/frame/@src"/>
    non mi restituisce nessun valore (come se non trovasse niente o non riuscisse a trvare l'xpath relativo alla richiesta)

    se scrivo
    <xsl:apply-templates select="html/head/title"/>
    anche in questo caso non restituisce nessun valore (ho provato anche a mettere come xpath solo l'elemento interessato ma non è cambiato niente) anche se cambio xpath all'interno dell'attributo select, il risultato non cambia

    se invece scrivo
    <xsl:apply-templates />
    senza inserire l'attributo select e specificare l'xpath mi restituisce sempre e solo il contenuto del tag title e il contenuto del tag script, che è dopo title all'interno dell'header, senza andare ad eseguire le operazioni che invece dovrebbe eseguire

  8. #8
    Hai fissato la root con <template match="/"> ?

    Poi,
    per cercare di capire se a darti fastidio può essere la presenza di qualche tag,
    proverei a ridurre al minimo il codice html,
    per esempio rimuovendo i tag meta, il tag script e se c'è la dichiarazione doctype.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  9. #9
    ciao,
    questo problema l'h risolto. gli dava fastidio la dichiarazione del doctype.
    il problema adesso è un altro: senza la dichiarazione di doctype non riconosce le entità tipo le lettere accentate come tali e non mi permette di eseguire il foglio di stile e, ovviamente, con la dichiarazione di doctype sono punto e a capo...

    hai un suggerimento?

    grazie ancora.

  10. #10
    Ciao,
    questo mi sa che è un bel problema !!!

    Non so se cambiando l'encoding potresti risolvere il problema,
    prova a dare un'occhiata qui: http://en.wikipedia.org/wiki/Character_encoding
    o a fare una ricerca nel forum: qualcuno avrà avuto il tuo problema.....

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

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.