Bonjour
ce post fait suite à celui-ci. Il s'agit d'une transformation côté client.
Je travaille avec Dreamweaver, quand je lance un aperçu avec Safari ou Firefox (depuis le menu Aperçu de Dreamweaver), pas de probleme. Mais quand j'appelle le fichier directement dans Firefox, le message suivant apparait:
"Error during XSLT transformation: XSLT transformation failed."
Alors que tout se passe bien sous Safari
Le probléme apparait depuis que j'ai ajouté xsl:element name="div" dans:
Pour transformer ce code xml
Voici le code source généré qui semble tout à fait correct:
Savez-vous pourquoi?
Malheureusement je ne dispose pas de windows, je n'ai que Mac OSX pour tester mon code.
Par avance merci de votre aide.
Modifié par dj DMSR (01 Oct 2007 - 04:31)
ce post fait suite à celui-ci. Il s'agit d'une transformation côté client.
Je travaille avec Dreamweaver, quand je lance un aperçu avec Safari ou Firefox (depuis le menu Aperçu de Dreamweaver), pas de probleme. Mais quand j'appelle le fichier directement dans Firefox, le message suivant apparait:
"Error during XSLT transformation: XSLT transformation failed."
Alors que tout se passe bien sous Safari
Le probléme apparait depuis que j'ai ajouté xsl:element name="div" dans:
<?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"
encoding="UTF-8"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:key name="cle" match="item" use="parent"/>
<xsl:template match="/">
<xsl:apply-templates select="plist/item[not(parent)]">
<xsl:with-param name="marge" select="''"/>
<xsl:sort select="nom" order="ascending"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="item">
<xsl:if test="type!='contenu'">
<xsl:param name="marge" />
<xsl:value-of select="concat($marge,'',nom)"/>
<xsl:element name="div"><!-- ICI -->
<xsl:attribute name="id"><xsl:value-of select="idunique" /></xsl:attribute>
<xsl:attribute name="class">open</xsl:attribute>
<xsl:apply-templates select="key('cle',idunique)">
<xsl:with-param name="marge" select="concat($marge,'-')"/><xsl:sort select="nom" order="ascending"/>
</xsl:apply-templates>
</xsl:element><!-- ET LÀ -->
</xsl:if>
<xsl:if test="type='contenu'">
<xsl:param name="marge" />
<xsl:value-of select="concat($marge,'',nom)"/>
<br/>
<xsl:apply-templates select="key('cle',idunique)">
<xsl:with-param name="marge" select="concat($marge,'-')"/><xsl:sort select="nom" order="ascending"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Pour transformer ce code xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="menu.xsl" type="text/xsl"?>
<plist>
<item>
<nom>master</nom>
<type>menu</type>
<idunique>1</idunique>
</item>
<item>
<nom>Dossier2</nom>
<type>dossier</type>
<parent>1</parent>
<idunique>2</idunique>
</item>
<item>
<nom>Dossier1</nom>
<type>dossier</type>
<parent>1</parent>
<idunique>3</idunique>
</item>
<item>
<nom>DossierX</nom>
<type>dossier</type>
<parent>5</parent>
<idunique>4</idunique>
</item>
<item>
<nom>Dossier</nom>
<type>dossier</type>
<parent>2</parent>
<idunique>5</idunique>
</item>
<item>
<nom>DossierY</nom>
<type>dossier</type>
<parent>5</parent>
<idunique>6</idunique>
</item>
<item>
<nom>Element</nom>
<type>contenu</type>
<parent>3</parent>
<idunique>7</idunique>
</item>
<item>
<nom>ElementA</nom>
<type>contenu</type>
<parent>4</parent>
<idunique>8</idunique>
</item>
<item>
<nom>ElementB</nom>
<type>contenu</type>
<parent>4</parent>
<idunique>9</idunique>
</item>
<item>
<nom>Element1</nom>
<type>contenu</type>
<parent>6</parent>
<idunique>10</idunique>
</item>
<item>
<nom>Element1</nom>
<type>contenu</type>
<parent>1</parent>
<idunique>11</idunique>
</item>
<item>
<nom>Element3</nom>
<type>contenu</type>
<parent>1</parent>
<idunique>12</idunique>
</item>
<item>
<nom>Element2</nom>
<type>contenu</type>
<parent>1</parent>
<idunique>13</idunique>
</item>
<item>
<nom>Element2</nom>
<type>contenu</type>
<parent>6</parent>
<idunique>14</idunique>
</item>
<item>
<nom>Element</nom>
<type>contenu</type>
<parent>2</parent>
<idunique>15</idunique>
</item>
</plist>
Voici le code source généré qui semble tout à fait correct:
<html>
<head></head>
<body>
master
<div id="1" class="open">-Dossier1
<div id="3" class="open">--Element<br>
</div>
-Dossier2
<div id="2" class="open">--Dossier
<div id="5" class="open">---DossierX
<div id="4" class="open">----ElementA<br>
----ElementB<br>
</div>
---DossierY
<div id="6" class="open">----Element1<br>
----Element2<br>
</div>
</div>
--Element<br>
</div>
-Element1<br>
-Element2<br>
-Element3<br>
</div>
</body>
</html>
Savez-vous pourquoi?
Malheureusement je ne dispose pas de windows, je n'ai que Mac OSX pour tester mon code.
Par avance merci de votre aide.
Modifié par dj DMSR (01 Oct 2007 - 04:31)