12

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

しかし、変換されたページに値が正しく表示されません。

これが私の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"/>

何か不足していますか?

4

1 に答える 1

16

ここに私の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>
于 2012-10-09T12:19:10.350 に答える