2012-10-08 10 views
10

XSLTスタイルシートにいくつかのパラメータを渡そうとしています。私はこの例に従っています:Passing parameters to XSLT Stylesheet via .NETパラメータをXSLTスタイルシートに渡す

しかし、私の変換されたページが正しく値を表示していません。

ここは私のC#コードです。 Visual Studio 2010ではXSLT 2.0を使用しないため、カスタム関数を追加して算術演算を行う必要がありました。ここで

var args = new XsltArgumentList(); 
    args.AddExtensionObject("urn:XslFunctionExtensions", new XslFunctionExtensions()); 
    args.AddParam("processingId", string.Empty, processingId); 

    var myXPathDoc = new XPathDocument(claimDataStream); 
    var xslCompiledTransformation = new XslCompiledTransform(true); 

    // XSLT File 
    xslCompiledTransformation.Load(xmlReader); 

    // HTML File 
    using (var xmlTextWriter = new XmlTextWriter(outputFile, null)) 
    { 
     xslCompiledTransformation.Transform(myXPathDoc, args, xmlTextWriter); 
    } 

は私のXSLTです:

<xsl:template match="/"> 
    <xsl:param name="processingId"></xsl:param> 
    ..HTML.. 
    <xsl:value-of select="$processingId"/> 

私は何かが足りないのですか?ここで

+0

あなたは'ます。を持っていますか?ローカルパラメータを作成するテンプレート内でパラメータを定義したようです。外部パラメータの場合、パラメータはグローバルでなければならないので、xslと同じレベルで定義する必要があります。template要素 – Pawel

+0

トップレベルでの意味がわかりません。パラメータの定義は、私の質問に貼り付けたの下にあります。その上にタグがあります。 – coson

+0

私はそれがxsl:templateの中にあってはならないことを意味しました。次のようなものを試してください: '" $ processingId "/> ... ' – Pawel

答えて

15

私のXSLTです:

<xsl:template match="/">  
    <xsl:param name="processingId"></xsl:param>  
    ..HTML..  
    <xsl:value-of select="$processingId"/> 

私は何かが足りないのですか?ないテンプレートレベルのパラメータの値 -

はい、あなたは、XSLT変換の呼び出しが グローバルレベルパラメータの値を設定することができるという事実が欠落しています。

したがって、コードがなければなりません:トップレベルで `:

<xsl:param name="processingId"/>  

<xsl:template match="/">  
    ..HTML..  
    <xsl:value-of select="$processingId"/> 
    <!-- Possibly other processing here --> 
</xsl:template> 
+2

これは実際には分かりやすいことですが、Javaを使用してこれを行うことができるかどうかは知っていますか? – adam5990

+0

@ adam5990、使用している特定のXSLTプロセッサがJavaで書かれている場合はあります。プログラムでグローバルなパラメータの値を指定する方法は実装固有であり、XSLTプロセッサーからXSLTプロセッサーまでさまざまです。たとえば、Saxonのドキュメントのこのセクションを参照してください:saxonica.com/documentation/#!using-xsl/embedding/...。具体的には、以下のように述べています(「ポイント1」)。「XsltTransformerのメソッドを使用してグローバルスタイルシートパラメータの値を設定することができます」コマンドレット変換からXSLT変換を呼び出すことは、ライン。 –