Bonjour,

Voilà je butte sur un problème étrange et je ne comprends pas ce qui se passe, pourtant tout semble correct dans le DOM inspector de Firefox ainsi que le plugins FireBug.
Utilsation : Firefox (2.0.0.1) et IE 6

Mon tableau se garnit bizarement.

Mon fichier "client"

<html>
  <head>
    <title>Transformation XSLT</title>
    <script type="text/javascript">
      function loadXML(url)
      {
        var xmlDoc;
        /* chargement du fichier XML */
        try {
          // navigateur basé sur Gecko
          if (document.implementation && document.implementation.createDocument)
          {
            xmlDoc = document.implementation.createDocument('', '', null);
            xmlDoc.load(url);
          // ActiveX pour Internet Explorer
          } else if (window.ActiveXObject) {
            try {
              xmlDoc = new ActiveXObject('Msxml2.XMLDOM');
            } catch (e) {
              xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            }
            xmlDoc.async = false;
            xmlDoc.load(url);
          // à l'aide de lobjet XMLHTTPRequest
          } else if (window.XMLHttpRequest) {
            xmlDoc = new XMLHttpRequest();
            xmlDoc.overrideMimeType('text/xml');
            xmlDoc.open('GET', url, false);
            xmlDoc.send(null);
            if (this.xmlDoc.readyState == 4) xmlDoc = xmlDoc.responseXML;
          }
        } catch (e) {
          return e;
        }
        return xmlDoc;
      }

      function transform(id)
      {  
         var xml = loadXML(artisteURL);
         var xsl = loadXML(paroleURL);
   
        try {
          // navigateur basé sur Gecko
          if (window.XSLTProcessor)
          {
            var fragment;
            var xsltProcessor = new XSLTProcessor();

            xsltProcessor.importStylesheet(xsl);
            fragment = xsltProcessor.transformToFragment(xml, document);
            var target = document.getElementById(id);            
            target.appendChild(fragment);
            document.appendChild(target);

          // ActiveX pour Internet Explorer
          } else if (window.ActiveXObject) {
            var target = document.getElementById(id);
            target.innerHTML = xml.transformNode(xsl);
          }

        } catch (e) {
          return e;
        }
      }

      var artisteURL = 'dyn.php';
      var paroleURL = 'xsldyn.xsl';

    </script>

  </head>
  <body>
  <table border="1">
  <thead>
    <tr>
      <th onclick="transform('donnee');">C1</th>
      <th>C2</th>
      <th>C3</th>
    </tr>
  </thead>
  <tbody id="donnee">  
  </tbody>
</table>  
  </body>
</html>


Mon fichier PHP qui génére le XML (des données aléatoire Smiley cligne )

<?php

function Hasard()
{
  return rand(1,100);
}

function RetourLignes()
{
  $strLignes = '';
  $nbLigne = rand(1,5);

  for ($i=0;$i<$nbLigne;$i++)
  {   
    $strLignes .= '<ligne>';
    $strLignes .= '<cell value="'. Hasard() .'" />';
    $strLignes .= '<cell value="'. Hasard() .'" />';
    $strLignes .= '<cell value="'. Hasard() .'" />';
    $strLignes .='</ligne>';
  }
return $strLignes;
}

header('Content-Type: text/xml;charset=utf-8');
$monxml = '<?xml version="1.0" encoding="UTF-8" ?>';
/*$monxml .= '<?xml-stylesheet href="xsldyn.xsl" type="text/xsl" ?>';*/
$monxml .= '<grille>';
$monxml .= RetourLignes();
$monxml .= '</grille>';
echo $monxml;
?>


Mon fichier XSL

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output
		method="xml"
		version="1.0"
		encoding="utf-8"
		omit-xml-declaration="yes"
		doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
		doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
		indent="yes" />


  <xsl:template match="/">
    <xsl:apply-templates select="grille" />
  </xsl:template>
  
  
  <xsl:template match="grille">
  
		<xsl:for-each select="ligne">
	    <tr>
          <xsl:for-each select="cell">
		        <td>
		          <xsl:value-of select="@value" />
		        </td>
		      </xsl:for-each>
      </tr>
		</xsl:for-each>		
		<!--<div>test</div>-->
	</xsl:template>
  		
</xsl:stylesheet>


Merci de votre aide
Modérateur
Bonsoir,

Une petite question : Que se passe-t-il si Javascript est désactivé ?
Pourquoi ne pas faire la transformation via PHP (XSLTProcessor) ?