Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-08-2004, 23:34   #1
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Trasformazione xml -> html con xslt

Ho un problema con un processore xslt (saxon 6.5.3) che sembra eseguire male l'iterazione con il for; io gli dico di iterare per ogni nodo <item> del nodo corrente e di produrre per ciascuno un blocco <li>...<li> in una lista; ma alla fine mi trovo una lista con molti piu elementi di quelli elencati nel documento xml; se visualizzo il file xml direttamente con Internet Explorer me lo visualizza correttamente, mentre con FireFox ottengo lo stesso risultato di saxon. Questo è il file a.xml:

Codice:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>

<document>
	<list>
		<item>1</item>
		<item>2</item>
		<item>3</item>
	</list>
</document>
e questo il file a.xsl:

Codice:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<html><body>
			<xsl:apply-templates select="//list"/>
		</body></html>
	</xsl:template>


	<xsl:template match="list">
		<ul>
			<xsl:for-each select="node()">
				<li>elemento
					<xsl:apply-templates select="." />
				</li>
			</xsl:for-each>
		</ul>
	</xsl:template>

</xsl:stylesheet>
e il risultato prodotto, notate che tutti li elementi della lista corretti sono intervallati da elementi in piu (nei quali c'è solo il testo 'elemento' senza il numero):

Codice:
<html>
   <body>

      <ul>

         <li>elemento
         </li>

         <li>elemento 1
         </li>

         <li>elemento
         </li>

         <li>elemento 2
         </li>

         <li>elemento
         </li>

         <li>elemento 3
         </li>

         <li>elemento
         </li>

      </ul>
   </body>
</html>
Si tratta di un bug o sbalio io a scrivere? Mi sembra di aver letto che saxon è tra i processori piu diffusi, me ne sapete indicare qlcunaltro buono?
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2004, 12:29   #2
theClimber
Senior Member
 
L'Avatar di theClimber
 
Iscritto dal: Oct 2000
Messaggi: 235
Re: Trasformazione xml -> html con xslt

con node() identifichi anche i nodi di testo vuoti, presenti tra un item e l'altro, come da specifica W3C:
Quote:
node() matches any node other than an attribute node and the root node
Sembra quindi che il contenuto del ciclo viene eseguito non solo per i nodi item, ma anche per i nodi di testo vuotiche servono per andare a capo tra un item e l'altro.... Infatti ce ne sono 4 di elementi senza numero, come 4 sono i nodi di spazi vuoti intorno agli elementi <item>.

Secondo specifica questi nodi vuoti dovrebbero essere eliminati in fase di parsing, a meno di esplicite direttive per preservarli. Non e' che hai settato qualche direttiva in SAXON x modificare questo?

In alternativa prova con il seguente codice (che ti evita anche il ciclo for, che personalmente ritengo da evitare se possibile in XSLT )
Codice:
         .....
	<xsl:template match="list">
		<ul>
		         <xsl:apply-templates/>
		</ul>
	</xsl:template>

	<xsl:template match="item">
		<li>elemento <xsl:value-of select="."/></li>
	</xsl:template>
         .....
Quote:
Originariamente inviato da anx721
Mi sembra di aver letto che saxon è tra i processori piu diffusi, me ne sapete indicare qlcunaltro buono?
Xalan:
http://xml.apache.org/xalan-j/index.html

Ciao
__________________
...writing about climbing is boring. I would rather go climbing. (Chuck Pratt)
theClimber è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2004, 14:46   #3
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
razie per la risposta, temevo di esserel'unico qui ad occuparmi di xslt...

In effetti avevo gia risolto mettendo * al posto di node(), e aveva funzionato, anche se non riuscivo a capire il comportamento di node(). Poi ci ero arrivato facendo un po di prove e inserendo del testo qua e la e avevo intuito qquel che faceva. In effetti mi ero gia scaricato anche xalan, e quando ho visto che mi produceva lo stesso output di saxon ho capito che ero io a sbagliare... La cosa strana era pero che Internet explorer mi visualizzava i risultati come volevo io, ingnorando le parti di testo, a differenza di firefox che invece mi ha fattoa ccorgere dell'errore.

il motivo per cui nonho utilizzato la forma:

<xsl:template match="item">
<li>elemento <xsl:value-of select="."/></li>
</xsl:template>

è perche in altri contesti <item> non deve essere trasformato in un <li>. probablemnte pero si poteva fare anche in altri modi senza il for, forse utilizzando i mode?
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2004, 20:16   #4
theClimber
Senior Member
 
L'Avatar di theClimber
 
Iscritto dal: Oct 2000
Messaggi: 235
Ottimo, in effetti con * si identificano i soli element, e non nodi generici che potrebbero essere anche di altri tipi.
Per essere + precisi, si potrebbe matchare solo gli elementi <item> , in modo che se si aggiungono ulteriori elementi differenti, non vengono inseriti nella lista di output
Codice:
....
<xsl:for-each select="item">
...
Quote:
Originariamente inviato da anx721
si poteva fare anche in altri modi senza il for, forse utilizzando i mode?
Si, nel caso devi presentare lo stesso elemento varie volte, il mode e' una buona scelta. L'unico inghippo a cui prestare attenzione e' che non si propaga automaticamente in caso di ulteriori subtemplates chiamati con apply-templates.

Ciao
__________________
...writing about climbing is boring. I would rather go climbing. (Chuck Pratt)
theClimber è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v