Элемент <xsl:with-param>

Передает параметр шаблону.

<xsl:with-param
  name = QName
  select = Expression
</xsl:with-param>

Атрибуты

  • имя
    Обязательный. Тип Полные имена (XSLT) параметра.

  • select
    Элемент Выражения (XSLT) для сопоставления с текущим контекстом. Значение по умолчанию отсутствует. Если содержимое отсутствует, создается пустая строка.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

Элементы xsl:apply-templates, xsl:call-template

Дочерние элементы

xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:for-each, xsl:if, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable

Заметки

Атрибут name является обязательным. Он задает имя параметра. Параметр - это переменная, для которой заменяется значение привязки.

Элемент <xsl:with-param> допустим как внутри элемента <xsl:call-template>, так и внутри элемента <xsl:apply-templates>.

Значение параметра задается точно так же, как для <xsl:variable> и <xsl:param>.

Текущий узел и текущий список узлов, используемые в вычислениях значения, заданного элементом <xsl:with-param>, такие же, как в элементах <xsl:apply-templates> или <xsl:call-template>, в которые входит данный элемент.

Передача параметра x шаблону, у которого отсутствует элемент <xsl:param> для x, ошибкой не является. Этот параметр будет просто пропущен.

Пример

Описанную ниже методику можно использовать в таблице стилей для вызова локализованных строк сообщений.

Сообщения языка некоторый_язык хранятся в XML-файле resources/сокращенное_название_языка.xml в виде, показанном в приведенном ниже примере XML-файла.

XML-файл (app.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="showlocmsg.xsl" ?>
<showmsg>
   <msg23/>
</showmsg>

XML-файл ресурсов (resources/en.xml)

<?xml version='1.0'?>
<messages>
  <message name="msg23">Error 23: The drive is full.</message>
  <message name="msg42">Error 42: The file is not found.</message>
</messages>

XSLT-файл (showlocmsg.xsl)

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- These 2 elements effectively assign
     $messages = resources/en.xml/<messages>,
     then $messages is used in the "localized-message" template.  -->
<xsl:param name="lang">en</xsl:param>
<xsl:variable name="messages"
      select="document(concat('resources/', $lang, '.xml'))/messages"/> 

<xsl:template name="msg23" match="msg23">
  <xsl:call-template name="localized-message">
    <xsl:with-param name="msgcode">msg23</xsl:with-param>
  </xsl:call-template>
</xsl:template>

<xsl:template name="localized-message">
  <xsl:param name="msgcode"/>
  <!-- Show message string. -->
  <xsl:message terminate="yes">
    <xsl:value-of select="$messages/message[@name=$msgcode]"/>
  </xsl:message>
</xsl:template>

</xsl:stylesheet>

Вывод

Далее приведен форматированный вывод.

Пример полученных результатов

Далее приведен вывод обработчика.

<?xml version="1.0" encoding="UTF-16"?>

См. также

Ссылки

Элемент <xsl:call-template>

Элемент <xsl:variable>

Элемент <xsl:param>

Элемент <xsl:template>