2010-11-23 6 views
1

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

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. Мысли?

+0

Вы не показали XML документ, на котором применяется преобразование, не показали само преобразование, не Шоун определение и значение `$ nodeid`, не показали кто и как вызывает преобразование, не показал результат преобразования. Это не вопрос. Пожалуйста, измените свой вопрос и предоставите полную информацию, чтобы люди не могли догадаться. – 2010-11-23 03:33:19

ответ

0

Использовать 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 } 

Ссылки

Смежные вопросы