別のxslファイルで呼び出されるxsl:template name=myTemplateを定義するときにどちらかを使用することを検討しています。
レガシーコードは、xsl:template match = "legacyTemplate"で使用される場合、'xsl:variable'を使用しているようです
では、xsl:template name = myTemplateで使用する場合のxsl:paramとxsl:variableの違いは何ですか?
別のxslファイルで呼び出されるxsl:template name=myTemplateを定義するときにどちらかを使用することを検討しています。
レガシーコードは、xsl:template match = "legacyTemplate"で使用される場合、'xsl:variable'を使用しているようです
では、xsl:template name = myTemplateで使用する場合のxsl:paramとxsl:variableの違いは何ですか?
違いは、の値xsl:param
が宣言されているコンテキストの外部に設定される可能性があることです。たとえば、次を参照してください。
<xsl:template ...>
<xsl:param name="p" select="'x'" />
<xsl:variable name="v" select="'y'" />
...
$v
そうすれば、それは常に文字列を与えることを知っています'y'
。ただし$p
、文字列はデフォルトにすぎません。テンプレートが次のいずれかで呼び出された場合、または次のような命令が含まれている'x'
場合は、異なる値が表示さ
れます。xsl:apply-templates
xsl:call-template
<xsl:with-param name="p" select="'not x'" />
<xsl:param>
xsl:template
また、スタイルシートの最上位の外部で使用することもできます。このようなパラメーターの値は、XSLTプロセッサーが呼び出されたときに設定できます。これがどのように行われるかは、プロセッサと、コマンドラインから呼び出すかプログラムから呼び出すかによって異なります。