Параметры и переменные должны быть в верхней части шаблона? - PullRequest
1 голос
/ 08 июня 2011

Я думал, что параметры и переменные должны быть в начале шаблона ... но я могу успешно скомпилировать этот код:

   <xsl:template name="WriteOptions">
      <xsl:param name="input"/>
      <xsl:choose>
      <xsl:when test="true()">
      </xsl:when>
      <xsl:otherwise>
         <xsl:param name="head" select="substring-before($input, ',')"/>
         <xsl:variable name="tail" select="substring-after($input, ',')"/>
         <option value="{$head}"><xsl:value-of select="$head"/></option>
      </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

Так что мне было интересно, в чем подвох

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

За спецификацию , вы можете написать <xsl:param> как дочерний элемент <xsl:template> и <xsl:stylesheet> (или <xsl:transform>, который является альтернативным элементом верхнего уровня в XSLT).

Если ваша таблица стилей компилируется, то ваш XSLT-процессор ведет себя нестандартно.

1 голос
/ 08 июня 2011

Только xsl:param в xsl:template должно быть дочерним по отношению к xsl:template инструкции.

Для xsl:variable такого требования нет - W3CСпецификации XSLT 1.0 и XSLT 2.0 позволяют им отображаться на любой глубине в таблице стилей XSLT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...