Coucou,

Je n'arrive pas à récuperer dans une feuille XSLT des paramètres déclarées dans un bloc Javascript :

Le code Javascript ci-dessous consiste à :
-charger les document xml et la feuille de style
-créer un processeur Xslt en lui fournissant la feuille de style
-passer les paramètres éventuels de la feuille de style
-écrire le résultat dans un élément de la page.

<html>
<TITLE>Coverage Informations</TITLE>
<head>
<script type="text/javascript">

	var processor;
	var xmlDoc;
	var xslt;
	
	function print(level, pathLevel, parentName){
		[b]processor.setParameter(null,"level", level);
		processor.setParameter(null,"pathLevel", pathLevel);
		processor.setParameter(null,"parentName", parentName);[/b]
		var resultat = processor.transformToFragment(xmlDoc, document);
		document.body.innerHTML = ""
		document.body.appendChild(resultat);
	}
	
	function init_xml(){

		xslt = document.implementation.createDocument("", "", null);
		xslt.async=false;
		xslt.load("ws-xslt.xml");
			
		processor =new XSLTProcessor();
		processor.importStylesheet(xslt);
		xmlDoc= document.implementation.createDocument("", "", null);
		xmlDoc.async=false;
		xmlDoc.load("ws.xml");
    
		[b]print('frameworks','frameworks/framework','');[/b]
	}
	
</script>
</head>
<body>
	<script type="text/javascript">
		init_xml();
    </script>

</body>
</html>


Dans ma feuille XSLT ( ws-test.xml ), j'essaie de récuperer le paramètre "pathLevel" dans un template match sans succès (j'ai mis ci-dessous pas le code de la feuille de style en entier juste le nécessaire et ai mis en gras là où ça coince):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE toto[
  <!ENTITY nbsp "&#160;" >
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>
    
    <xsl:param name="level"/>
    <xsl:param name="pathLevel"/>
    <xsl:param name="parentName"/>
    
	<xsl:template match=[b]"$pathLevel"[/b]>
			<BODY>
			<xsl:if test="$level='frameworks'"><xsl:call-template name="fw_list"/></xsl:if>
			<xsl:if test="$level='framework'"><xsl:call-template name="listOfModule_from_fw"/></xsl:if>
			</BODY>
	</xsl:template>


Par contre : <xsl:if test="$level='frameworks'"> marche (paramètre $level) à croire que les paramètres ne marchent que si on les utilisent dans une comparaison ..??

Voici le fichier xml correspondant (ws.xml) :
<?xml version="1.0" encoding="utf-8" ?>
<frameworks nbL='152'>
    <framework name='fw1' nbL='51'>
        <module name='m2' nbL='21'>
        </module>
    </framework>
    <framework name='fw2' nbL='55'>
        <module name='m3' nbL='21'>
        </module>
    </framework>
    <framework name='fw3' nbL='52'>
        <module name='m4' nbL='21'>
        </module>
    </framework>
    <framework name='fw4' nbL='56'>
        <module name='m5' nbL='21'>
        </module>
    </framework>
</frameworks>


Pouvez-vous me dire pourquoi je n'arrive pas à récuperer le paramètre dans le template match ? sinon quelle correction faut il-apporter ?

MErci par avance de votre réponse ..
Modifié par vinzmeister (29 May 2006 - 14:33)