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

    xsl:for-each e xsl:sort output errato

    Salve, sto creando un file xsl per applicare delle trasformazioni ad un file xml in modo che diventi un file RDF. Per fare ciò utilizzo una classe java che usa le API jena che a loro volta utilizzano un processore GRDDL.
    il problema è questo devo convertire questa porzione di codice:
    <indice>
    <item ord="1" rif="sch-130" tipo="tappa"/>
    <item ord="3" rif="sch-132" tipo="tappa"/>
    <item ord="5" rif="sch-134" tipo="tappa"/>
    <item ord="7" rif="sch-136" tipo="tappa"/>
    <item ord="10" rif="sch-139" tipo="tappa"/>
    <item ord="12" rif="sch-141" tipo="tappa"/>
    </indice>
    in questa:
    <rdf:Description rdf:about="http://www.percorsi.org/indice">

    <pr:item rdf:resource="http://www.percorsi.it/indice/item/1"/>
    <pr:ord>1</pr:ord>
    <pr:rif>sch-130</pr:rif>
    <pr:tipo>tappa</pr:tipo>
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/2"/>
    <pr:ord>3</pr:ord>
    <pr:rif>sch-132</pr:rif>
    <pr:tipo>tappa</pr:tipo>
    .........................ecc.....................
    </rdf:Description>



    ho provato in tutti i modi ma non riesco a formattare l'output in questo modo!!!
    Questi sono alcuni dei tentativi che ho fatto:
    1)
    <xsl:template match="//indice">
    <rdf:Description rdf:about="http://www.percorsi.org/indice">
    <xsl:for-each select="item">

    <ind:tipo>
    <xsl:value-of select="@tipo"/>
    </ind:tipo>
    <ind:rif>
    <xsl:value-of select="@rif"/>
    </ind:rif>
    <ind:ord>
    <xsl:value-of select="@ord"/>
    </ind:ord>
    <xsl:variable name="indice_uri"
    select="concat('http://www.percorsi.it/indice/item/',@ord)"/>
    <pr:item rdf:resource="{$indice_uri}"/>

    </xsl:for-each>


    </rdf:Description>
    </xsl:template>
    se uso questo template ho il seguente output:
    <rdf:Description rdf:about="http://www.percorsi.org/indice">
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/10"/>
    <ind:rif>sch-130</ind:rif>
    <ind:rif>sch-136</ind:rif>
    <ind:ord>5</ind:ord>
    <ind:rif>sch-139</ind:rif>
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/5"/>
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/1"/>
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/12"/>
    <ind:ord>12</ind:ord>
    <ind:tipo>tappa</ind:tipo>
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/7"/>
    <ind:ord>10</ind:ord>
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/3"/>
    <ind:rif>sch-132</ind:rif>
    <ind:ord>3</ind:ord>
    <ind:ord>7</ind:ord>
    <ind:rif>sch-134</ind:rif>
    <ind:rif>sch-141</ind:rif>
    <ind:ord>1</ind:ord>
    </rdf:Description>

    e qualsiasi tentativo di introdurre <xsl:sort> non mi da alcun risultato è come se non funzionasse!
    se apporto la seguente modifica:
    <xsl:value-of select="//item/@tipo"/>
    </ind:tipo>
    <ind:rif>
    <xsl:value-of select="//item/@rif"/>
    </ind:rif>
    <ind:ord>
    <xsl:value-of select="//item/@ord"/>
    </ind:ord>
    invece mi stampa correttamente solo il primo elemento, in questo caso è come se <xsl:for-each> non funzionasse:
    <pr:item rdf:resource="http://www.percorsi.it/indice/item/1"/>
    <pr:ord>1</pr:ord>
    <pr:rif>sch-130</pr:rif>
    <pr:tipo>tappa</pr:tipo>
    sono disperato, non riesco a trovare il modo di ottenenere l'output desiderato, sono nelle vostre mani! Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    4
    nessuno mi aiuta? :-(

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.