カテゴリの○○件目以降を一覧表示
カテゴリの○○件目以降を一覧表示
お世話になります。
一覧表示時にカテゴリごとのポジションを取得、判断しての
表示ができるか質問です。
1つのエントリの中でカテゴリごとの11件目以降を
一覧表示させたい場合にはどのようにすればいいのでしょうか?
<data name="kind" type="menu" group="True" caption="種類">
<menuitem id="00">種類を選択してください</menuitem>
<menuitem id="01">A</menuitem>
<menuitem id="02">B</menuitem>
<menuitem id="03">C</menuitem>
<menuitem id="04">D</menuitem>
<menuitem id="05">E</menuitem>
</data>
とスキーマ定義し、
エントリデータに種類を持たせておき
一覧表示させるときに絞り込み機能を使用せずに
各種類の11件目から表示させたいです。
表示結果のイメージとしては
Aのデータ(Aの11件目データ)
Cのデータ(Cの11件目データ)
Cのデータ(Cの12件目データ)
Bのデータ(Bの11件目データ)
Dのデータ(Dの11件目データ)
Eのデータ(Eの11件目データ)
Dのデータ(Dの12件目データ)
Aのデータ(Aの12件目データ)
Aのデータ(Aの13件目データ)
・
・
・
このように表示させることは可能でしょうか?
複雑になるとは思いますが、よろしくお願い致します。
一覧表示時にカテゴリごとのポジションを取得、判断しての
表示ができるか質問です。
1つのエントリの中でカテゴリごとの11件目以降を
一覧表示させたい場合にはどのようにすればいいのでしょうか?
<data name="kind" type="menu" group="True" caption="種類">
<menuitem id="00">種類を選択してください</menuitem>
<menuitem id="01">A</menuitem>
<menuitem id="02">B</menuitem>
<menuitem id="03">C</menuitem>
<menuitem id="04">D</menuitem>
<menuitem id="05">E</menuitem>
</data>
とスキーマ定義し、
エントリデータに種類を持たせておき
一覧表示させるときに絞り込み機能を使用せずに
各種類の11件目から表示させたいです。
表示結果のイメージとしては
Aのデータ(Aの11件目データ)
Cのデータ(Cの11件目データ)
Cのデータ(Cの12件目データ)
Bのデータ(Bの11件目データ)
Dのデータ(Dの11件目データ)
Eのデータ(Eの11件目データ)
Dのデータ(Dの12件目データ)
Aのデータ(Aの12件目データ)
Aのデータ(Aの13件目データ)
・
・
・
このように表示させることは可能でしょうか?
複雑になるとは思いますが、よろしくお願い致します。
Re: カテゴリの○○件目以降を一覧表示
nagashimaさん、ご質問ありがとうございます。
ご質問の件についてですが、通常の方法では、ご要望を実現することができません。
カテゴリ単位での出力であれば、「11件目以降のみ出力」ということは可能
なのですが・・・。
書くことで、11件目以降のみが出力されるようになります。
XSLTを駆使してご要望を実現する方法もあるのですが、あまりにも複雑な方法
の為、お勧めすることができません。また、サンプルを作って確認している時間が
取れず、サンプルの提示が難しい状況です。
概念のみ説明すると、
・xsl:variable name="kind01" select="entry[kind='01'][position()<=10" />
という記述を使って、kind01〜05のエントリの先頭10件分を変数に保存する。
・entryループ内では、xsl:ifを使って、$kindXXの中に現在のエントリが含まれて
いるかをチェックする。含まれていれば、出力しないようにする。
というものです。
あまり効率の良い方法でもありませんし、よほどXSLTに慣れていないと難しいと
思います。m(__;)m
ご質問の件についてですが、通常の方法では、ご要望を実現することができません。
カテゴリ単位での出力であれば、「11件目以降のみ出力」ということは可能
なのですが・・・。
コード: 全て選択
<xsl:for-each select="entry[position()>10]" >
<!-- 出力内容を記述 -->
</xsl:for-each>
XSLTを駆使してご要望を実現する方法もあるのですが、あまりにも複雑な方法
の為、お勧めすることができません。また、サンプルを作って確認している時間が
取れず、サンプルの提示が難しい状況です。
概念のみ説明すると、
・xsl:variable name="kind01" select="entry[kind='01'][position()<=10" />
という記述を使って、kind01〜05のエントリの先頭10件分を変数に保存する。
・entryループ内では、xsl:ifを使って、$kindXXの中に現在のエントリが含まれて
いるかをチェックする。含まれていれば、出力しないようにする。
というものです。
あまり効率の良い方法でもありませんし、よほどXSLTに慣れていないと難しいと
思います。m(__;)m
Re: カテゴリの○○件目以降を一覧表示
webmasterさん
ご返信ありがとうございます。
やはり複雑になってしまいますか。
概念のご説明ありがとうございました。
他の対処法も考えてみますが、
これをもとに頑張ってチャレンジしてみます。
ありがとうございました。
ご返信ありがとうございます。
やはり複雑になってしまいますか。
概念のご説明ありがとうございました。
他の対処法も考えてみますが、
これをもとに頑張ってチャレンジしてみます。
ありがとうございました。
Re: カテゴリの○○件目以降を一覧表示
webmasterさん
お世話になります。
現在いろいろと試しており下記の部分でつまずいているのですが、
現在のエントリが含まれているかのチェックをidで行いたいのですが
どのように記述すればいいのでしょうか?
>・entryループ内では、xsl:ifを使って、$kindXXの中に現在のエントリが含まれて
> いるかをチェックする。含まれていれば、出力しないようにする。
<xsl:variable name="kind01" select="entry[kind='01'][position()<=10"] />
のようにまずは10件分のentryを取得しています。
$kind01のなかに現在のentryがあるかチェック。
※idが一意なのでidで比較したいのですがなかなかうまいこといきません。
現在のentryのid取得
<xsl:variable name="kindid" select="@id" />
現在のentryがあるかチェック
<xsl:variable name="kindcount" select="count(/$kind01[@id=$kindid])" />
よくわかっていないので、
上記のような感じでいろいろ試してみましたが、うまくいきません。
ここがクリアすればやりたいことができるかと思うのですが・・・
お手数おかけしますがよろしくお願い致します。
お世話になります。
現在いろいろと試しており下記の部分でつまずいているのですが、
現在のエントリが含まれているかのチェックをidで行いたいのですが
どのように記述すればいいのでしょうか?
>・entryループ内では、xsl:ifを使って、$kindXXの中に現在のエントリが含まれて
> いるかをチェックする。含まれていれば、出力しないようにする。
<xsl:variable name="kind01" select="entry[kind='01'][position()<=10"] />
のようにまずは10件分のentryを取得しています。
$kind01のなかに現在のentryがあるかチェック。
※idが一意なのでidで比較したいのですがなかなかうまいこといきません。
現在のentryのid取得
<xsl:variable name="kindid" select="@id" />
現在のentryがあるかチェック
<xsl:variable name="kindcount" select="count(/$kind01[@id=$kindid])" />
よくわかっていないので、
上記のような感じでいろいろ試してみましたが、うまくいきません。
ここがクリアすればやりたいことができるかと思うのですが・・・
お手数おかけしますがよろしくお願い致します。
Re: カテゴリの○○件目以降を一覧表示
nagashimaさん、いろいろとお手数をおかけしているようで申し訳ありません。
ご質問の件なのですが、具体的な方法となるとこちらでも一度試してみる必要があり、
現在その時間を確保できません。m(__)m
<xsl:variable name="eid" select="@eid" />
<xsl:if test="$kind01/entry[@eid=$eid]" >
〜
<xsl:if>
といった感じでできないかと思っていますが、細かいところが間違っていたり、
そもそも方法論が間違っている可能性があるかと思います。
完全な解決策を提示できず、申し訳ありません。
ご質問の件なのですが、具体的な方法となるとこちらでも一度試してみる必要があり、
現在その時間を確保できません。m(__)m
<xsl:variable name="eid" select="@eid" />
<xsl:if test="$kind01/entry[@eid=$eid]" >
〜
<xsl:if>
といった感じでできないかと思っていますが、細かいところが間違っていたり、
そもそも方法論が間違っている可能性があるかと思います。
完全な解決策を提示できず、申し訳ありません。
Re: カテゴリの○○件目以降を一覧表示
webmasterさん
ご返信ありがとうございます。
お勧めしていない方法なのにあれこれやってすいません。
> <xsl:variable name="eid" select="@eid" />
> <xsl:if test="$kind01/entry[@eid=$eid]" >
> 〜
> <xsl:if>
if文のところがうまくとおりませんでした。
<xsl:if test="$kind01/entry[@id=$eid]" >
でやってもとおりませんでした。
<xsl:value-of select="$eid" />
<xsl:for-each select="$kind01">
<xsl:value-of select="title" disable-output-escaping="yes" /><xsl:value-of select="@id" />
</xsl:for-each>
と@id、$eidの中身を表示させ確認しましたが同一idが存在していました。
なのにif文がとおりません
<xsl:variable name="kindcount" select="count($kind01/entry[@id=$eid])" />
<xsl:if test="$kindcount = 0">
〜
</xsl:if>
という方法も試したのですが、「=」になるidが存在するはずなのに
count()の結果で $kindcout に「0」が返されてしまいます。
なにか他のところに問題があるのでしょうか?
ご返信ありがとうございます。
お勧めしていない方法なのにあれこれやってすいません。
> <xsl:variable name="eid" select="@eid" />
> <xsl:if test="$kind01/entry[@eid=$eid]" >
> 〜
> <xsl:if>
if文のところがうまくとおりませんでした。
<xsl:if test="$kind01/entry[@id=$eid]" >
でやってもとおりませんでした。
<xsl:value-of select="$eid" />
<xsl:for-each select="$kind01">
<xsl:value-of select="title" disable-output-escaping="yes" /><xsl:value-of select="@id" />
</xsl:for-each>
と@id、$eidの中身を表示させ確認しましたが同一idが存在していました。
なのにif文がとおりません

<xsl:variable name="kindcount" select="count($kind01/entry[@id=$eid])" />
<xsl:if test="$kindcount = 0">
〜
</xsl:if>
という方法も試したのですが、「=」になるidが存在するはずなのに
count()の結果で $kindcout に「0」が返されてしまいます。
なにか他のところに問題があるのでしょうか?
Re: カテゴリの○○件目以降を一覧表示
nagashimaさん、お返事ありがとうございます。
既にお気づきかと思いますが、
<xsl:variable name="eid" select="@id" />
<xsl:if test="$kind01/entry[@id=$eid]" >
〜
<xsl:if>
が正しいコードでした。混乱させてしまってすいません。
おそらく、このコードでもNGだったということだと思います。
一度、下記コードを試して頂いて、$kind01に必要なデータがそもそも
入っているかを確認して頂くと、何か分かるかもしれません。
<xsl:value-of select="count($kind01/entry)" />
こちらで試せれば手っ取り速いと思うのですが、時間が取れず申し訳
ありません。m(__)m
XSLTでこの手の「プログラミング」的なことをやろうとするといろいろと
クセが強く、思い通りに行かない事がよくあるようです。
既にお気づきかと思いますが、
<xsl:variable name="eid" select="@id" />
<xsl:if test="$kind01/entry[@id=$eid]" >
〜
<xsl:if>
が正しいコードでした。混乱させてしまってすいません。
おそらく、このコードでもNGだったということだと思います。
一度、下記コードを試して頂いて、$kind01に必要なデータがそもそも
入っているかを確認して頂くと、何か分かるかもしれません。
<xsl:value-of select="count($kind01/entry)" />
こちらで試せれば手っ取り速いと思うのですが、時間が取れず申し訳
ありません。m(__)m
XSLTでこの手の「プログラミング」的なことをやろうとするといろいろと
クセが強く、思い通りに行かない事がよくあるようです。
Re: カテゴリの○○件目以降を一覧表示
webmasterさん
ご返信ありがとうございます。
> こちらで試せれば手っ取り速いと思うのですが、時間が取れず申し訳
> ありません。m(__)m
アドバイス頂けてもの凄い助かってます。
さっそく試してみます。
ご返信ありがとうございます。
> こちらで試せれば手っ取り速いと思うのですが、時間が取れず申し訳
> ありません。m(__)m
アドバイス頂けてもの凄い助かってます。
さっそく試してみます。
Re: カテゴリの○○件目以降を一覧表示
webmasterさん
結果的に下記でやりたいことができるようになりそうです。
まず
<xsl:value-of select="count($kind01/entry)" />
を表示させたところ「0」が表示されました。
<xsl:value-of select="$kind01" />
を表示させるとエントリデータが表示されました。
<xsl:value-of select="count($kind01)" />
を試しに表示させるとちゃんと$kind01に入れたentryデータ数
が表示されました。
この結果から推測して、
<xsl:if test="$kind01[@id=$eid]" >
を試したところちゃんとif文の中に処理が入ってくれました。
変数にentryデータを代入すると<entry>じゃなくて<変数名>になるんですかね?
「/entry」の部分が不要みたいでした。
この方法でなんとかやりたいことが実現できそうなので
進めていきたいと思います。
本当に助かりました。
ありがとうございました。
今後ともよろしくお願い致します。
結果的に下記でやりたいことができるようになりそうです。
まず
<xsl:value-of select="count($kind01/entry)" />
を表示させたところ「0」が表示されました。
<xsl:value-of select="$kind01" />
を表示させるとエントリデータが表示されました。
<xsl:value-of select="count($kind01)" />
を試しに表示させるとちゃんと$kind01に入れたentryデータ数
が表示されました。
この結果から推測して、
<xsl:if test="$kind01[@id=$eid]" >
を試したところちゃんとif文の中に処理が入ってくれました。
変数にentryデータを代入すると<entry>じゃなくて<変数名>になるんですかね?
「/entry」の部分が不要みたいでした。
この方法でなんとかやりたいことが実現できそうなので
進めていきたいと思います。
本当に助かりました。
ありがとうございました。
今後ともよろしくお願い致します。
Re: カテゴリの○○件目以降を一覧表示
nagashimaさん、お返事ありがとうございます。
なるほど、$kind01にはおそらく「entry」そのものが入っているようです。
てっきり、$kind01がルート要素で、その下にentryが配置されるものと
思っておりました。
この辺、いつもよくわからなくなってこんがらがってしまいます。
混乱させてしまい、申し訳ありませんでした。
また、問題が起きましたらご連絡いただければ幸いです。
なるほど、$kind01にはおそらく「entry」そのものが入っているようです。
てっきり、$kind01がルート要素で、その下にentryが配置されるものと
思っておりました。
この辺、いつもよくわからなくなってこんがらがってしまいます。
混乱させてしまい、申し訳ありませんでした。
また、問題が起きましたらご連絡いただければ幸いです。