Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Complete è un robot aspirapolvere che coniuga un'aspirazione potente e un lavaggio con rullo a logica di intelligenza artificiale che guida al meglio nella pulizia di casa: rulli e spazzole estensibili a pulire gli angoli e una base di ricarica che lava e ripristina il robot al emglio delle sue funzionalità dopo ogni azione di pulizia
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
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


Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
SpaceX non lancerà più Sta...
EHA Reader Awards 2026: i migliori prodo...
NVIDIA ha insegnato all'IA a ricostruire...
Rimosso un raro tumore grazie alla simul...
ASUS alza l'asticella del gaming: ecco i...
I satelliti Rassvet (Starlink russo) di ...
AMD stravince la sua stessa sfida sull'e...
Novità per Renault 5: più ...
Altman ammette: "Troppo ambiziosi s...
Grazie al radiotelescopio ALMA c'è...
Estensioni per browser e shadow AI sono ...
ASUS ROG punta sugli eSport con OLED da ...
Un chip più piccolo e un package ...
Windows 11, la DLL della memoria unifica...
Arrivano i nuovi Mac mini e Mac Studio c...
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: 03:59.


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