- - PR -
XSLのfor-eachについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-27 15:37
この前のスレッドでカラムを4つに分けて・・・という質問をした者です。
先の件と同様、カラムを4つに分けて表示させる帳票のようなものを 作成しているのですが、その中に表を表示させたいと思っています。 今、for-eachを使ってXML中に繰り返される数の行の表を作成しているのですが その中に「カラム1で50行を過ぎたら51行目からはカラム2に」とか、 場合によっては「カラム1で50行を過ぎたら51行目からはカラム4に」とか いう処理を追加したいのですが、for-each内でこのような事は可能でしょうか? 度々、申し訳ないのですがよろしくお願いします。 |
|
投稿日時: 2004-12-27 17:54
for-each 行
value-of select="floor((position()-1+50) div 50)"/ /for-each position 関数で 現在行番号はわかります、 あとは、 if や choose で振り分けに行けます。 XSL-FO では 領域の高さでも 指定して 行数に枠をかけれる、かも。 [ メッセージ編集済み 編集者: MMX 編集日時 2004-12-27 17:56 ] |
|
投稿日時: 2004-12-27 21:19
MMXさま。
いつもありがとうございます。本当に助かってます。 今、教えていただいた value-of select="floor((position()-1+50) div 50)"/ を使い、いろいろ試しています。 場合分け方法として、 <if test="floor((position()-1+50) div 50)='1'/> 等でテンプレートごとに分ける処理は思いついたのですが、 (アホな質問で申し訳ないですが・・・) value-of select="floor((position()-1+50) div 50)"/ これだとどうしても表上に1や2や3と表示されてしまうのですが これを表示させなくする(中身での処理にする) にはどのようにすればよろしいですか? 本当、お恥ずかしい限りですがよろしくお願い致します。 |
|
投稿日時: 2004-12-28 12:04
まだここの処理に関して悩んでいるのですが・・・。
for-each中で繰り返しを抜ける処理ってありませんか? exitは無いですよね・・・。 |
|
投稿日時: 2004-12-28 17:29
>これを表示させなくする(中身での処理にする)
choose のtest で参照するだけですみます。 段番号を 何回も参照するなら、variable に入れると使えます。 >for-each中で繰り返しを抜ける処理ってありませんか? exitは無いですよね・・・。 大域脱出はありません。if で空回しするしかできません。 ここが逐次実行のイメージの手続き型発想です、 一度再検討が必要です、できると、プログラムの幅が広がります。 適当に書いて、質問をするより、じっくり簡単なサンプル を多数、読むほうが効率がよい、学習時期と思います。 分からないときは全部展開で書いてもよいでしょう HTML 風サンプル DIV DIV 1段目 for-each lines[(position() > 0) and (51 > position() )] /DIV DIV 2段目 for-each lines[(position() > 50) and (101 > position() )] /DIV /DIV XSLTを使うには、縦形探索ぽい、それぞれの枝が独立しているイメージをしてください。 その他 1.再帰呼び出し、 2.パターンマッチ→実行部の push 処理 3.for-each でランダムアクセスでの pull 処理 などXSLT は多彩な顔を持っています。 Lisp,Yacc,Prolog などもカリキュラムでやっておくと 使うことは一生ないですが、XSLTなどに当たっても平常心を保てます。 XSLT2.0 では かなり逐次的な味付けが導入されます, 手続き言語発想の人々にも「やや」やさしくなるでしょう。 先行実装版も 出ています、(ソフト間の競争もあるので勧告発行と同時にリリースになるでしょう、たぶん。 XSLT1.0でマイナーなソフトは 2.0発行の切れ目でアピールのチャンスがある) 追加参考 XSLT 2 対 XQuery XQueryは、XSLTの宣言的性格と精神的に非互換性の人々によって歓迎されました。 同時に、XSLT信者は、XSLTが既にできることのためのカスタム・シンタックスとしてXQueryを知覚して、 ▲ XSLTの実行意味論に なじめないと感じたなら、XQuery を待ちましょう、βも見つかります。 http://www.xml.com/lpt/a/2004/12/29/deviant.html 翻訳サイトに投げ込むと読めます。 (言語にデータモデルを統合する課題は色々です、言語+XMLとか 言語+RDB とか) -------------- 新作いろいろ Berkeley DB XML 2.0 Now Available! http://www.sleepycat.com/products/xml.shtml ============================================== 今日の発見 【 JoSQL 】perform SQL-like queries on a collection of Java Objects. http://josql.sourceforge.net/ 発想はXQuery ぽいものがある、 SELECT <要素名> FROM <XMLファイル> WHERE <XPath式>; なら使いたいでしょうか? [ メッセージ編集済み 編集者: MMX 編集日時 2005-01-07 11:58 ] |
1