ページ 1 / 1
「続き」の文章があるときのみ「続きを読む」のボタンを表示させたい
Posted: 2005年12月19日(月) 20:48
by bcacsato
ブログ風に「続きを読む」をクリックすると個別エントリを表示するようなページを作成したいと思っております。
そこで、下記のようにスキーマを定義しました。
<data name="text1" type="textarea" caption="本文" maxlength="300" output="html2" />
<data name="text2" type="textarea" caption="続き" maxlength="300" output="html2" />
そして、「続き」の文章が入力されているときだけ「続きを読む」のリンクが表示されるよう、
テンプレート内に下記のように記述しました。
<div><xsl:if test="text2/text()"><a href="〜.php{@href}">続きを読む</a></xsl:if></div>
しかし、「続き」の文章がなくても、「続きを読む」のリンクが表示されてしまいます。
この記述のどこかが間違ってますでしょうか?
恐れ入りますが、ご検討よろしくお願いいたします。
通りすがりですが。
Posted: 2005年12月20日(火) 10:34
by シンP
自分も
<xsl:if test="hoge/text()">hogehoge</xsl:if>
が正常に動作しないという症状が出ています。
<xsl:if test="not(hoge='')">hogehoge</xsl:if>
というような記述で目的の動作を得ることが出来ました。
Re: 通りすがりですが。
Posted: 2005年12月20日(火) 11:36
by webmaster
webmasterです。
お手数をおかけしております。m(_ _)m
マニュアルの方が、最近のCMSDの仕様か、又はXSLTエンジンの仕様に合わなく
なっているものと思われます。
シンPさんの方法の方がより安定して動作すると思いますので、そちらをご利用
頂ければと思います。
こちらでももう少し検証して、マニュアルの方を合わせて修正致します。
解決しました
Posted: 2005年12月20日(火) 20:12
by bcacsato
シンPさんのアドバイスの通りにやったらできました!
なんで、
<xsl:if test="hoge/text()">hogehoge</xsl:if>
でダメなのかはイマイチ納得できませんが、とりあえず解決しました〜
どうもありがとうございました<(_ _)>
Re: 解決しました
Posted: 2005年12月20日(火) 20:42
by webmaster
webmasterです。
解決されたようでなによりです。m(_ _)m
いちおう、簡単に解説しますと、
test="hoge/text()" と書くと、「hogeの内容が存在する場合」という意味に
なります。
test="not(hoge='')"と書くと、「hogeの内容が空文字ではない場合」という
意味になります。
どうやら、環境によっては、エントリデータの保存時に、内容が入力されていなくても
hogeの内容として「空文字」を作るようなのです。
たとえ空文字であっても、内容が存在するという条件に合致してしまう為、
今回のような事が起きるのだと思います。
これに対して hoge='' と書くと、内容が存在しない場合でも空文字が存在する
場合でも等しく「真」として評価される為、問題が起きません。
今回は「入力がある場合」なので、not(hoge='') としています。
not(hoge='') という表記よりも、hoge/text() という表記の方が直感的に
理解しやすいのではないかと思い、これまでそのような記述をマニュアルでは
してきましたが、問題が起きるようですので今後は not(hoge='')に切り替えたいと
思います。
分かりました!
Posted: 2005年12月20日(火) 20:49
by bcacsato
なるほど!やっと理解できました。
くわしい解説ありがとうございました<(_ _)>
マニュアル
Posted: 2006年4月18日(火) 12:49
by bcacsato
いつも大変お世話になってます。
こちらの件ですが、今回の改訂版のマニュアルでも直ってないですよね?
このことをすっかり忘れて、同じことでまた悩んでました…(^_^;)
マニュアルと言えば、チュートリアル2のテキストファイル「6. デザインを定義する。」内の
「※スキーマ名.list.デザイン名.xsl」も「design」が抜けてますよね。
細かいことですいません…。
Re: マニュアル
Posted: 2006年4月18日(火) 13:06
by webmaster
webmasterです。
申し訳ありません、この件、CMSD側で対応した為マニュアル修正不要と勘違い
しておりました。m(__;)m
環境によるものなので、マニュアル側の対応が必要だったのですよね。
次回までには修正いたします。
余計なお手間を取らせてしまい、すいませんでした。