「続き」の文章があるときのみ「続きを読む」のボタンを表示させたい

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

「続き」の文章があるときのみ「続きを読む」のボタンを表示させたい

投稿記事 by bcacsato » 2005年12月19日(月) 20:48

ブログ風に「続きを読む」をクリックすると個別エントリを表示するようなページを作成したいと思っております。

そこで、下記のようにスキーマを定義しました。

<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>

しかし、「続き」の文章がなくても、「続きを読む」のリンクが表示されてしまいます。

この記述のどこかが間違ってますでしょうか?
恐れ入りますが、ご検討よろしくお願いいたします。

シンP

通りすがりですが。

投稿記事 by シンP » 2005年12月20日(火) 10:34

自分も
<xsl:if test="hoge/text()">hogehoge</xsl:if>
が正常に動作しないという症状が出ています。
<xsl:if test="not(hoge='')">hogehoge</xsl:if>
というような記述で目的の動作を得ることが出来ました。

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

Re: 通りすがりですが。

投稿記事 by webmaster » 2005年12月20日(火) 11:36

 webmasterです。
 お手数をおかけしております。m(_ _)m

 マニュアルの方が、最近のCMSDの仕様か、又はXSLTエンジンの仕様に合わなく
なっているものと思われます。

 シンPさんの方法の方がより安定して動作すると思いますので、そちらをご利用
頂ければと思います。

 こちらでももう少し検証して、マニュアルの方を合わせて修正致します。

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

解決しました

投稿記事 by bcacsato » 2005年12月20日(火) 20:12

シンPさんのアドバイスの通りにやったらできました!

なんで、
<xsl:if test="hoge/text()">hogehoge</xsl:if>
でダメなのかはイマイチ納得できませんが、とりあえず解決しました〜 :lol:

どうもありがとうございました<(_ _)>

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

Re: 解決しました

投稿記事 by webmaster » 2005年12月20日(火) 20:42

 webmasterです。
 解決されたようでなによりです。m(_ _)m

 いちおう、簡単に解説しますと、

 test="hoge/text()" と書くと、「hogeの内容が存在する場合」という意味に
なります。
 test="not(hoge='')"と書くと、「hogeの内容が空文字ではない場合」という
意味になります。

 どうやら、環境によっては、エントリデータの保存時に、内容が入力されていなくても
hogeの内容として「空文字」を作るようなのです。

 たとえ空文字であっても、内容が存在するという条件に合致してしまう為、
今回のような事が起きるのだと思います。

 これに対して hoge='' と書くと、内容が存在しない場合でも空文字が存在する
場合でも等しく「真」として評価される為、問題が起きません。
 今回は「入力がある場合」なので、not(hoge='') としています。

 not(hoge='') という表記よりも、hoge/text() という表記の方が直感的に
理解しやすいのではないかと思い、これまでそのような記述をマニュアルでは
してきましたが、問題が起きるようですので今後は not(hoge='')に切り替えたいと
思います。

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

分かりました!

投稿記事 by bcacsato » 2005年12月20日(火) 20:49

なるほど!やっと理解できました。

くわしい解説ありがとうございました<(_ _)>

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

マニュアル

投稿記事 by bcacsato » 2006年4月18日(火) 12:49

いつも大変お世話になってます。

こちらの件ですが、今回の改訂版のマニュアルでも直ってないですよね?
このことをすっかり忘れて、同じことでまた悩んでました…(^_^;)

マニュアルと言えば、チュートリアル2のテキストファイル「6. デザインを定義する。」内の
「※スキーマ名.list.デザイン名.xsl」も「design」が抜けてますよね。

細かいことですいません…。

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

Re: マニュアル

投稿記事 by webmaster » 2006年4月18日(火) 13:06

 webmasterです。
 申し訳ありません、この件、CMSD側で対応した為マニュアル修正不要と勘違い
しておりました。m(__;)m

 環境によるものなので、マニュアル側の対応が必要だったのですよね。
 次回までには修正いたします。

 余計なお手間を取らせてしまい、すいませんでした。

返信