xsl:attribute要素内でエントリIDを出力したい

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

xsl:attribute要素内でエントリIDを出力したい

投稿記事 by bcacsato » 2012年11月10日(土) 06:24

一覧ページから個別ページへのリンクで、絞り込み条件によってリンク先を変更したいため、
http://cms.al-design.jp/phpbb/viewtopic ... 5139#p5139
こちらのページを参考に、下記の通り記述しました。

コード: 全て選択

<article>
	<a>
		<xsl:if test="//group[@key='category1']/@value='1'"><xsl:attribute name="href">page1.php?eid={@id}</xsl:attribute></xsl:if>
		<xsl:if test="//group[@key='category2']/@value='2'"><xsl:attribute name="href">page2.php?eid={@id}</xsl:attribute></xsl:if>
		<xsl:if test="not(//group[@key='category1']/@value) and not(//group[@key='category1']/@value)"><xsl:attribute name="href">other.php?eid={@id}</xsl:attribute></xsl:if>
		・・・・
	</a>
</article>
しかし、これですと{@id}のところにパラメータ値が代入されず、「{@id}」とそのまま表示されてしまいます。
{@href}にしても同様です。

URLのパラメータにエントリIDを出力する方法はありますでしょうか?


※ところで、上記リンク先ページの下記ソースですが、</attribute> ではなく、</xsl:attribute> ですね?
 このソースをそのまま使ったため作動せず、かなり悩みました(^^ゞ

コード: 全て選択

<a>
    <xsl:attribute name="href">http://cms.al-design.jp</attribute>CMS Designer
</a>

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: xsl:attribute要素内でエントリIDを出力したい

投稿記事 by webmaster » 2012年11月10日(土) 11:29

bcacsatoさん、いつもコメントありがとうございます。webmasterです。

このあたり、私もよく混乱するのですが、{@id}と書けるのは属性値の中(つまり"?"の中)だけで、それ以外の場所には「xsl:value-of」を使います。
ですのでこの場合、

<xsl:attribute name="href">page1.php?eid=<xsl:value-of select="@id" /></xsl:attribute>

としてみてください。
※ところで、上記リンク先ページの下記ソースですが、</attribute> ではなく、</xsl:attribute> ですね?
 このソースをそのまま使ったため作動せず、かなり悩みました(^^ゞ
これは、無駄なお時間をとらせてしまい、申し訳ありませんでした…。m(__;)m
この手のサンプルソースに間違いがあると、多くの方に本当に無駄な時間を取らせることになってしまう為、気をつけてはいるのですが…。ご指摘ありがとうござました。元記事の方はすぐに修正させて頂きます。

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: xsl:attribute要素内でエントリIDを出力したい

投稿記事 by bcacsato » 2012年11月10日(土) 16:30

webmasterさま
ご回答ありがとうございます。
ご提示いただいた方法でうまくいきました!

これまでカテゴリごとにデザイン定義ファイルを作成していたため、
1つのファイルで管理できるようになり、大変楽になりました。

返信