<xsl:with-param> 要素

テンプレートにパラメータを渡します。

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

属性

  • name
    必ず指定します。パラメータの 修飾名
  • select
    現在のコンテキストの照合に使われる 。既定値はありません。コンテンツがなければ、空の文字列が生成されます。

要素情報

出現回数

無制限

親要素

xsl:apply-templatesxsl:call-template

子要素

xsl:apply-templatesxsl:attributexsl:call-templatexsl:choosexsl:commentxsl:copyxsl:copy-ofxsl:elementxsl:for-eachxsl:ifxsl:processing-instructionxsl:textxsl:value-ofxsl: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 を渡しても、パラメータが無視されるだけで、エラーは発生しません。

スタイル シートで次の方法を使用して、ローカライズされたメッセージ文字列を呼び出すことができます。

言語 somelanguage のメッセージは XML ファイル resources/languageabbreviation.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> 要素