ブログ風に「続きを読む」をクリックすると個別エントリを表示するようなページを作成したいと思っております。
そこで、下記のようにスキーマを定義しました。
<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>
しかし、「続き」の文章がなくても、「続きを読む」のリンクが表示されてしまいます。
この記述のどこかが間違ってますでしょうか?
恐れ入りますが、ご検討よろしくお願いいたします。
「続き」の文章があるときのみ「続きを読む」のボタンを表示させたい
Re: 通りすがりですが。
webmasterです。
お手数をおかけしております。m(_ _)m
マニュアルの方が、最近のCMSDの仕様か、又はXSLTエンジンの仕様に合わなく
なっているものと思われます。
シンPさんの方法の方がより安定して動作すると思いますので、そちらをご利用
頂ければと思います。
こちらでももう少し検証して、マニュアルの方を合わせて修正致します。
お手数をおかけしております。m(_ _)m
マニュアルの方が、最近のCMSDの仕様か、又はXSLTエンジンの仕様に合わなく
なっているものと思われます。
シンPさんの方法の方がより安定して動作すると思いますので、そちらをご利用
頂ければと思います。
こちらでももう少し検証して、マニュアルの方を合わせて修正致します。
Re: 解決しました
webmasterです。
解決されたようでなによりです。m(_ _)m
いちおう、簡単に解説しますと、
test="hoge/text()" と書くと、「hogeの内容が存在する場合」という意味に
なります。
test="not(hoge='')"と書くと、「hogeの内容が空文字ではない場合」という
意味になります。
どうやら、環境によっては、エントリデータの保存時に、内容が入力されていなくても
hogeの内容として「空文字」を作るようなのです。
たとえ空文字であっても、内容が存在するという条件に合致してしまう為、
今回のような事が起きるのだと思います。
これに対して hoge='' と書くと、内容が存在しない場合でも空文字が存在する
場合でも等しく「真」として評価される為、問題が起きません。
今回は「入力がある場合」なので、not(hoge='') としています。
not(hoge='') という表記よりも、hoge/text() という表記の方が直感的に
理解しやすいのではないかと思い、これまでそのような記述をマニュアルでは
してきましたが、問題が起きるようですので今後は not(hoge='')に切り替えたいと
思います。
解決されたようでなによりです。m(_ _)m
いちおう、簡単に解説しますと、
test="hoge/text()" と書くと、「hogeの内容が存在する場合」という意味に
なります。
test="not(hoge='')"と書くと、「hogeの内容が空文字ではない場合」という
意味になります。
どうやら、環境によっては、エントリデータの保存時に、内容が入力されていなくても
hogeの内容として「空文字」を作るようなのです。
たとえ空文字であっても、内容が存在するという条件に合致してしまう為、
今回のような事が起きるのだと思います。
これに対して hoge='' と書くと、内容が存在しない場合でも空文字が存在する
場合でも等しく「真」として評価される為、問題が起きません。
今回は「入力がある場合」なので、not(hoge='') としています。
not(hoge='') という表記よりも、hoge/text() という表記の方が直感的に
理解しやすいのではないかと思い、これまでそのような記述をマニュアルでは
してきましたが、問題が起きるようですので今後は not(hoge='')に切り替えたいと
思います。