AJAX / XSL: использование параметров POST в XSLT - PullRequest
1 голос
/ 23 ноября 2010

Я отправляю параметры POST в таблицу стилей XSLT через AJAX.

Фрагмент AJAX:

//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);

XSL-фрагмент

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

«Привет» возвращается в ответе, но не nodeid. Это кажется довольно простым, так чего мне не хватает? Я пробовал запустить его локально, а также на JRun / Coldfusion. Мысли?

1 Ответ

0 голосов
/ 09 мая 2014

Используйте API, специфичный для процессора, чтобы получить параметр nodeid перед обработкой.Либо в PHP:

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

или 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>

, либо в VBScript:

nameOfString = WScript.Stdin.ReadAll

или Awk:

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

Ссылки

...