2013-11-11 4 views
1

В моей рабочей XSLT, у меня есть сценарий следующим образом в некоторых файлахXSLT вызова шаблона, когда он имеет параметры и имеет не

<xsl:template name="content"> 
<xsl:param name="request" as="node()" select="doc('')"/> 
    <div class="main-group"> 
     <div class="main container" id="main_content"> 

     something goes here.. 

     </div> 
    </div> 
    </xsl:template> 

В некоторых XSLT, этот шаблон может иметь пары «запрос» и в некоторых xslt это может не иметь, я имею в виду следующее.

<xsl:template name="content"> 
    <!--param missing here--> 
     <div class="main-group"> 
      <div class="main container" id="main_content"> 

      something goes here.. 

      </div> 
     </div> 
</xsl:template> 

Таким образом, в обоих случаях мне нужно называть этот шаблон [name = "content"] без проблем.

я следующий образом:

<xsl:apply-templates select="content"> 
    <xsl:with-param name="request" select="$request"/> 
</xsl:apply-templates> 
<xsl:call-template name="content"/> 

Моя цель состоит в том, чтобы вызвать шаблон с именем «содержанием» без проблем, даже если шаблон имеет параметры с именем «запрос» или он не имеет пары «запроса»

Это хорошо? Могу ли я представить себе, может ли это ошибка?

ответ

1

В XSLT 2.0 это an error, чтобы попытаться передать (не туннель) параметр с call-template шаблону, который не объявляет этот параметр.

Это не ошибка XSLT 1.0, в этом случае незаявленный параметр просто игнорируется.

Это не ошибка передать необъявленную tunnel parameter к call-template, так что это может быть один из способов обойти эту проблему - использовать tunnel="yes" на обоих with-param в вызове и (если имеется) param в шаблоне. Но убедитесь, что вы понимаете, как работают параметры туннеля, и уверены, что они не вызовут других проблем в другом месте вашей таблицы стилей.

+0

@lan Roberts: Этот метод в порядке? Будет ли она удовлетворять мою цель? pls доля – Sakthivel

+0

@ Sakthivel извините, я неправильно прочитал ваш оригинальный вопрос, ответ нет, в XSLT 2.0 это не нормально (хотя он находится в версии 1.0). –

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