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[*]...[*] 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:
e questo il file a.xsl: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 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:<?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()"> [*]elemento <xsl:apply-templates select="." /> </xsl:for-each> [/list] </xsl:template> </xsl:stylesheet>
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?codice:<html> <body> <ul> [*]elemento [*]elemento 1 [*]elemento [*]elemento 2 [*]elemento [*]elemento 3 [*]elemento [/list] </body> </html>
![]()

Rispondi quotando