Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86

    trasformazione da xml a xsl

    Ciao a tutti ho questo file xml da cui dovrei estrappolare :
    1) l'elenco di tutti gli studenti con il valore di età maggiore di 22
    2) per ogni studente il terzo risultato presente in risultati
    trovo difficoltà nel punto 2 dove devo mettere accanto ai dati estrappolati dal terzo risultato presente in risultati accanto al nome dello studente! Ad esempio il risultato dovrebbe essere :
    Chris Taylor Statistica1 voto D però nella mia trasformazione prendo solo statistica 1 voto D senza il nome dello studente.
    codice:
    <studenti>
    	<studente id="100026">
    		<nome>Chris Taylor</nome>
    		<eta>27</eta>
    		<disciplina>biologia</disciplina>
    		<risultati>
    			<risultato corso="Matematica" voto="C-"/>
    			<risultato corso="Biologia" voto="C+"/>
    			<risultato corso="Statistica1" voto="D"/>
    		</risultati>
    	</studente>
    	
    	<studente id="100078">
    		<nome>Bob Barners</nome>
    		<eta>26</eta>
    		<disciplina>Fisica</disciplina>
    		<disciplina>Tecnologia</disciplina>
    		<risultati>
    			<risultato corso="Matematica" voto="A"/>
    			<risultato corso="XML" voto="A-"/>
    			<risultato corso="Fisica" voto="B+"/>
    			<risultato corso="XML2" voto="A"/>
    		</risultati>
    	</studente>
    	
    	<studente id="100079">
    		<nome>Elias Grodin</nome>
    		<eta>21</eta>
    		<disciplina>Fisica</disciplina>
    		<disciplina>ProgrammazioneXML</disciplina>
    			</studente>
    </studenti>
    XSL

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
    	
    <xsl:template match="/">
    <html>
    	<head>
    		<title>prova scritta</title>
    	</head>
    	<body>
    		<table border="1">
    			<thead>
    				<tr bgcolor="yellow">
    					<th>Nome Studente</th>
    					<th> eta</th>
    				</tr>
    			</thead>
    			<xsl:for-each select="studenti/studente">
    			<xsl:if test="eta &gt; 22">
    			<tbody>
    				<tr>
    					<td><xsl:value-of select="nome"/> </td>
    					<td><xsl:value-of select="eta"/> </td>
    				</tr>
    			</tbody>
    			</xsl:if>
    			</xsl:for-each>
    		</table>
    		
    	<hr/>
    	
    
    	
    	<table border="1">
    		<thead>
    			<tr bgcolor="red">
    				<th>Nome studente</th>
    				<th>Corso</th>
    				<th>voto</th>
    			</tr>
    		</thead>
    		
    		<xsl:for-each select="//risultato[3]">
    		<tbody>
    			<tr>
    			    <td><xsl:value-of select="nome"/></td>
    				<td><xsl:value-of select="@corso"/></td>
    				<td><xsl:value-of select="@voto"/></td>
    			</tr>
    		</tbody>
    	</xsl:for-each>
    </html>
    
    </xsl:template>
    </xsl:stylesheet>

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Dunque, sono un po arrugginito con i foglio xsl, vediamo se riesco ad esserti utile.

    Con l'istruzione
    codice:
    <xsl:for-each select="//risultato[3]">
    tu selezioni tutti i nodi risultato che stanno in terza posizione.
    Poi all'interno del ciclo, analizzi un nodo alla volta.

    Detto questo, quando vai a stampare corso e voto non ci sono problemi, perchè sono due attributi di risultato, ma quando vai a stampare nome non stampa niente perchè all'interno del nodo risultato non c'è nè un attributo nè un altro nodo di tipo "nome".

    Capito?
    Jekkil

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.