2010-11-23 10 views
1

私は、AJAX経由でXSLTスタイルシートにPOSTパラメータを送信しています。AJAX/XSL:XSLTでのPOSTパラメータの使用

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'の定義と値をshounていませんが、示されていません誰がどのように変換を呼び出すのかは、変換の結果を示していません。これはまったく問題ではありません。質問を修正し、人々が推測する必要のないように完全な情報を提供してください。 –

+0

私は私の質問でもっとはっきりしていたはずですが、闘う必要はありません。私はXMLの変換について尋ねていないので、上記のAJAX呼び出しで渡された "nodeid"パラメータの値を得ることができないのかと尋ねているので、XML文書は無関係です(JSコメントノードID値が1に等しいとして渡されることを示します)。私が言ったように、XSLスニペットに表示される値 "Hi"は、AJAX呼び出しを介してブラウザに戻されていますが、param $ nodeidはPOSTから値を取得していません。 – Robert

+0

ダイナミクスがはっきりしていません。何が最初に実行され、何が2番目に実行されるか:HTTPRequestまたはXSLT変換。また、 '$ nodeid'パラメタがXSLT変換にどのように渡されるのかは明らかではありません。外部パラメータの場合、変換の呼び出し時に渡される方法は実装依存であり、vemdorからベンダーに変わります。 –

答えて

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 } 

参照