予め xmlns:t="http://temporary/" とかやっておく。既存の空間が利用できるならそれ使ってもいいと思う。

<xsl:call-template name="tempfoo">
<xsl:with-param name="foo" xmlns="http://temporary/">
<foo>Foo</foo>
<foo>Bar</foo>
</xsl:with-param>
</xsl:call-template>
<xsl:template name="tempfoo">
<xsl:param name="foo"/>
<ol>
<xsl:for-each select="$foo/t:foo">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
</ol>
</xsl:template>
<ol>
<li>Foo</li>
<li>Bar</li>
</ol>

渡すほうに名前空間を指定しない場合は、(あたりまえだけど) デフォルトの空間になる。でもそのまま template のほうで接頭辞なしでアクセスしようとしても無理。

できないと思ってた方法ができると分かって、いろいろ楽できる! 諦めかけていたなか光をくれた (謎) 哀さん にありがとう

namazu スタイルシートをつくるときに、一個の option 要素ごとに selected を入れるかの if を作るのが面倒でごちゃごちゃやってた。だいぶスッキリしていい感じ。

ソース間違ってたのをちょっと修正。

  1. トップ
  2. web
  3. xsl:param にノード集合を渡す。
  1. トップ
  2. xslt
  3. xsl:param にノード集合を渡す。
▲ この日のエントリ