anx721
20-08-2004, 23:34
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:
<?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:
<?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):
<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?
<?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:
<?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):
<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?