XML - XSL et JavaScript

Fermé
ronchman07 Messages postés 30 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 juillet 2009 - 11 mai 2009 à 16:42
Bonjour,

je développe une petite application Web, mais je rencontre quelques problèmes dans l'implémentation d'un code XSL, langage que je maîtrise bien mal.

J'ai fait une page très courte XML, une page XSL qui marchait bien jusqu'à ce que je mette un script JavaScript dedans. Ce script est censé récupérer l'élément racine, et afficher le nombre de ses éléments fils. Le problème est qu'il marque un nombre d'éléments fils indéfini, il n'arrive pas à trouver l'élément racine.

Voici mon fichier XML:
[code]
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="testStyle.xsl"?>

<base>
<pays>
<nom>France</nom>
<annee>
<temps>2000</temps>
<indicateur>
<nom> PIB </nom>
<valeur> 200 </valeur>
<statut> off </statut>
<origine> WB </origine>
</indicateur>
<indicateur>
<nom> Density </nom>
<valeur> 106 </valeur>
<statut> off </statut>
<origine> NSO </origine>
</indicateur>
</annee>
<annee>
<temps>2001</temps>
<indicateur>
<nom> PIB </nom>
<valeur> 201 </valeur>
<statut> pred</statut>
<origine> WB </origine>
</indicateur>
<indicateur>
<nom> Density </nom>
<valeur> 106 </valeur>
<statut> pred </statut>
<origine> NSO </origine>
</indicateur>
</annee>
</pays>

<pays>
<nom>Switerland</nom>
<annee>
<temps>2001</temps>
<indicateur>
<nom> PIB </nom>
<valeur> 122 </valeur>
<statut> pred </statut>
<origine> WB </origine>
</indicateur>
</annee>
</pays>
</base>
/code

et mon fichier XSL:
[code]
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<head>
<title>Edit data</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />



</head>
<script type="text/javascript" language="javascript">
function len(){
node=window.document.getElementsByTagName("pays");
alert(node.childNodes.length);
}
</script>
<body onload="len()">

<table border="1">



<xsl:for-each select="/base/pays">
<tr>
<td> <xsl:value-of select="./nom" /> </td>
<xsl:for-each select="./annee">
<td><xsl:value-of select="./temps" /></td>

<xsl:for-each select="./indicateur">
<td>
<xsl:value-of select="./nom" />
</td>
<td> <xsl:value-of select="./valeur" /> </td>

</xsl:for-each>
</xsl:for-each>
</tr>
</xsl:for-each>

</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
/code

Les questions que je me pose sont:
1. Est-ce.que j'ai écrit le script au bon endroit?
2. Y a t.il un problème avec ma fonction len()?

Je n'ai pas trouvé de réponse sur le net, aussi j'aurais bien besoin de votre aide.

Merci!
A voir également: