Подтвердить что ты не робот

Передать параметр в таблицу стилей XSLT

Я пытаюсь передать пару параметров в таблицу стилей XSLT. Я последовал примеру: Передача параметров в таблицу стилей XSLT через .NET.

Но моя измененная страница неправильно отображает значение.

Вот мой код на С#. Мне пришлось добавить пользовательскую функцию для выполнения некоторой арифметики, потому что 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"/>

Я что-то пропустил?

4b9b3361

Ответ 1

Вот мой 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>