2010-11-23 8 views
1

J'envoie des paramètres POST à ​​une feuille de style XSLT via AJAX.AJAX/XSL: utilisation des paramètres POST dans XSLT

AJAX extrait:

//param name/value is nodeid=1 
xhttp.open("POST",dname,false); 
xhttp.setRequestHeader("Content-type", "text/plain"); 
xhttp.setRequestHeader("Content-length", params.length); 
xhttp.setRequestHeader("Connection", "close"); 
xhttp.send(params); 

extrait XSL

<xsl:param name="nodeid" /> 
<xsl:template match="/"> 
    Hi <xsl:value-of select="$nodeid" /> 
</xsl:template> 

"Salut" est de revenir dans la réponse, mais pas le nodeid. Cela semble assez simple, alors qu'est-ce qui me manque? Je l'ai essayé en local aussi bien que sur JRun/Coldfusion. Pensées?

+0

Vous avez pas montré le document XML sur lequel la transformation est appliquée, n'ont pas montré la transformation elle-même, ne sont pas Shoun la définition et la valeur de 'nodeid' de $, n'ont pas montré qui et comment invoque la transformation, n'ont pas montré le résultat de la transformation. Ce n'est pas une question du tout. S'il vous plaît modifier votre question et fournir des informations complètes afin que les gens n'auraient pas à deviner. –

+0

J'aurais dû être plus clair dans ma question, mais pas besoin d'être combatif. Le document XML n'est pas pertinent car je ne parle pas de la transformation du XML, je demande pourquoi ce qui précède n'est pas capable d'obtenir la valeur du paramètre "nodeid" passé dans l'appel AJAX ci-dessus (voir le commentaire JS indiquant que la valeur de nodeid passée est égale à 1). Comme je l'ai dit, la valeur "Hi" que vous voyez dans l'extrait XSL est renvoyée au navigateur via l'appel AJAX, mais le paramètre $ nodeid n'obtient pas la valeur du POST. – Robert

+0

La dynamique n'est pas claire. Qu'est-ce qui est exécuté en premier et quelle seconde: le HTTPRequest ou la transformation XSLT. En outre, il n'est pas clair comment le paramètre '$ nodeid' est passé à la transformation XSLT - s'il s'agit d'un paramètre externe, la façon dont il est passé à l'appel de la transformation est dépendante de l'implémentation et varie de vemdor à vendeur. –

Répondre

0

Utilisez une API spécifique au processeur pour obtenir le paramètre nodeid avant le traitement. Soit en PHP:

$transformer = new XSLTProcessor(); 
$transformer->importStylesheet("foo.xsl"); 
$transformer->setParameter('', 'nameOfPage', $_POST['nameOfPage']); 

ou Coldfusion:

<cffile action="read" file="C:\CFusion\wwwroot\testdocs\simpletransform.xsl" 
variable="xslDoc"> 

<cfset mystruct={nameOfPage=request.nameOfPage}> 
<cfset transformedXML = XmlTransform(mydoc, xslDoc, mystruct)> 

<cffile action="write" file="C:\CFusion\wwwroot\testdocs\transformeddoc.xml" 
output=transformedXML> 

ou VBScript:

nameOfString = WScript.Stdin.ReadAll 

ou Awk:

BEGIN { FS = "=" } ; { print $2 | xargs xsltproc foo.xsl foo.xml --param nameOfPage } 

Références

Questions connexes