エントリをXML出力し、FLASHで利用したいのですが・・・

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
moory

エントリをXML出力し、FLASHで利用したいのですが・・・

投稿記事 by moory » 2005年11月02日(水) 13:01

CMSDesignerから「XMLに変換するXSLT」をチュートリアルを読んで何度か試してみているのですが、どうもうまく画像が表示できないようです。
具体的には、下記のようなXMLを書き出したいのですが、どのようにXSLを書けばよいのでしょうか?

■書き出したいXML
<?xml version="1.0" encoding="EUC-JP"?>
<dataset>
<group>
<collection>images/01title.jpg</collection>
<jpg>images/sample1.jpg</jpg>
<URL>http://www.yahoo.jp/</URL>
</group>
<group>
<collection>images/02title.jpg</collection>
<jpg>images/sample2.jpg</jpg>
<URL>http://www.yahoo.jp/</URL>
</group>
</dataset>
■現在設定しているXSL
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entry">

<dataset>
<group>
<collection><img src="../{Rtitle}" /></collection>
<jpg><img src="../{Rproducts}" /></jpg>
<url><xsl:value-of select="Rurl" /></url>
</group>

<group>
<collection><img src="../{Ltitle}" /></collection>
<jpg><img src="../{Lproducts}" /></jpg>
<url><xsl:value-of select="Lurl" /></url>
</group>
</dataset>

</xsl:template>
</xsl:stylesheet>
■エントリー用のスキーマ
<?xml version="1.0" encoding="UTF-8"?>
<schema name="intro" caption="イントロFLASH用">

<data name="Rtitle" type="img" caption="タイトル画像-右" />
<data name="Rproducts" type="img" caption="画像-右" />
<data name="Rurl" type="text" caption="画像-右-リンク先" />

<data name="Ltitle" type="img" caption="タイトル画像-左" />
<data name="Lproducts" type="img" caption="画像-左" />
<data name="Lurl" type="text" caption="画像-左-リンク先" />

</schema>
■現在出力されているXML
<dataset>
<group>
<collection>
<img src="cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000001&/01title.jpg"/>
</collection>
<jpg>
<img src="cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000002&/sample1.jpg"/>
</jpg>
<url>
http://www.yahoo.co.jp/
</url>
</group>

<group>
<collection>
<img src="cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000003&/02title.jpg"/>
</collection>
<jpg>
<img src="cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000004&/sample2.jpg"/>
</jpg>
<url>
http://www.yahoo.co.jp/
</url>
</group>
</dataset>
現状ではFLASH側からXML自体は読み込めているようなのですが、画像が反映されません。 FLASH側で認識するXMLの書式では<Img src=”aaa.jpg”/>
を省いてやら無いとどうやら読めないようなんです。 ここで行き詰ってしまいました。 FLASH・PHP・XMLすべてにおいて中途半端な知識なので、何処から手をつけてよいのか悩んでます。ご教授願えませんでしょうか? :oops:

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

Re: エントリをXML出力し、FLASHで利用したいのですが・・・

投稿記事 by webmaster » 2005年11月02日(水) 13:30

 webmasterです。
 ついに、XMLを利用したFlash連携を使われる方がいらっしゃるようになり、
とてもうれしいです。

 おそらくあと一歩かと思います。
 XSLの部分を、
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entry">

<dataset>
<group>
<collection>../<xsl:value-of select="Rtitle" /></collection>
<jpg>../<xsl:value-of select="Rproducts" /></jpg>
<url><xsl:value-of select="Rurl" /></url>
</group>

<group>
<collection>../<xsl:value-of select="Ltitle" /></collection>
<jpg>../<xsl:value-of select="Lproducts" /></jpg>
<url><xsl:value-of select="Lurl" /></url>
</group>
</dataset>

</xsl:template>
</xsl:stylesheet>
 のように、変えてみて下さい。
 「<img src="../{xxxx}" />」の部分を「../<xsl:value-of select="xxxx"/>」に変えただけです。

 ただ、元のXSLだと、出力が
<collection>
<img src="cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000003&/02title.jpg"/>
</collection>
 ではなく
<collection>
<img src="../cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000003&/02title.jpg"/>
</collection>
 のように、「../cmsdesigner/〜」となると思うのですが、ひょっとして私が何か勘違いしているかもしれません。
 いちおう、上のXSLでは、出力が「../cmsdesigner/〜」となるようにしています。

moory

XML出力は無事できてましたが・・・

投稿記事 by moory » 2005年11月03日(木) 03:41

早速のご教授ありがとうございます。
「../<xsl:value-of select="xxxx"/>」。 
こういう記述をすればよかったんですね。
 「<xsl:value-of select=」までは試してみてはいたんですが、なにせ基本がわかっていないので「画像は{}で囲んでおくべし」と勝手に理解してハマってました(笑)

「../」の部分も、現状ではCMSDから生成されるphpファイルをROOT以外のディレクトリにおいているので、投稿する際にわかりずらくなるかと思い消したつもりだったんですが、XSLファイルは消えて無かったですね(汗)

おかげさまでXML出力までは無事に希望の記述になりました。
が、次のステップでまたつまづいてしまったようです。
どうもFLASHでは、「<collection>../cmsdesigner/viewimg.php?entryname=intro&entryid=00002&fileid=00000001&/01title.jpg</collection> 」の記述部分を画像と認識しないのか画像が表示されないです。 XMLを手書きで「<collection>../cmsdesigner/data/entry/intro/intro.00002.00000001.jpg</collection> 」のようにエントリーフォルダー内の画像を直接指定してやると読めるのですが・・・。 何かFLASH用に特別な記述方法が必要なんでしょうか?

基本が理解できていないので、もしえらく勘違いした質問なら本当に恐縮なんですが、
そもそも、CMSDesignerから出力されるXMLでの画像指定方法は「viewimag.php」を介してやらないとID的に指定できないんでしょうか? 単純にパス指定で記述できるとFLASH側で素直に読んでくれそうなんですが・・・。 
:shock:

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

Re: XML出力は無事できてましたが・・・

投稿記事 by webmaster » 2005年11月04日(金) 01:53

 webmasterです。

 申し訳ありません、おそらくCMSD側の問題です。
 弊社にて以前、簡単なFlashからの読み込みテストを行った際にはうまくいっていた
のですが、それ以降、一部CMSDの仕様を変更した際にうまくいかなくなっていた
ものと思われます。

 おそらく、ActionScriptにて loadMovieメソッドをご利用なのだと思いますが、
このメソッドにて引数に直接 "http://xxx.xxx.xx/cmsdesigner/viewimg.php?
entryname=xxxx&entryid=xxxxx&fileid=00000001&/01title.jpg" のような
値を入れて試したところ、セキュリティ関連のエラーが発生しました。

 おそらく、URLの最後の"&/01title.jpg"の部分が悪さをしているものと思われます。
 これを消して、"http://xxx.xxx.xx/cmsdesigner/viewimg.php?
entryname=xxxx&entryid=xxxxx&fileid=00000001"だけで試してみたところ、
正しく表示させることができました。

 これはCMSD側の問題なので近日中に何らかの対策を打とうと思うのですが、
まずは以下の方法を試していただけないでしょうか。
 XSLを以下のように変更します。
<collection>../cmsdesigner/viewimg.php?entryname=intro&entryid=<xsl:value-of select="format-number(@id,'00000')" />&fileid=<xsl:value-of select="Rtitle/@fileid" /></collection>
<jpg>../cmsdesigner/viewimg.php?entryname=intro&entryid=<xsl:value-of select="format-number(@id,'00000')" />&fileid=<xsl:value-of select="Rproducts/@fileid" /></jpg>
 「entryname=intro」 の部分は、もしエントリフォルダ名が違っていたら修正
して下さい。

別の方法として、<collection>../cmsdesigner/data/entry/intro/intro.00002.00000001.jpg</collection>
のように直接ファイルを指定する方法もあります。
<collection>../cmsdesigner/data/entry/intro/<xsl:value-of select="Rtitle/@src" /></collection>
<jpg>../cmsdesigner/data/entry/intro/<xsl:value-of select="Rproducts/@src" /></jpg>
 ただ、後者の方法ですと、直にファイルを読みに行く事になる為、CMSDの
画像縮小機能は使えなくなります。

 以上、よろしければ結果をご連絡頂ければ幸いです。
 もしこれでうまく行きましたら、結果をCMSDに反映し、もっと簡便にFlashから
使えるように変更させて頂きます。

moory

できました!

投稿記事 by moory » 2005年11月05日(土) 00:00

:P
早速のご返信ありがとうございます。
ご返信が遅くなってしまい申し訳ありません。

結論から申し上げますと「下の方法」、つまり画像を直接指定する方法では動いてくれました! 
ご指摘の通りFLASHで「loadMovie」させていますが、上の方法ではXMLでは正しく書き出されているようなのですが、FLASHに読み込むと表示できないようです。

コレに気を良くして、FLASHで書き出したSWFを元に「動的かつ動く(モーションする)リスト」を作ろうとがんばってみている最中です。
具体的には、「コンテンツマネージャーからjpgとSWFをアップロードし、jpgを読み込ませたSWFをリスト表示させ、クリックすると個別エントリページへリンクする」程度のものなんですが、「loadMovie」を利用した場合XMLファイル・jpg・swfがすべて同じディレクトリに保存されていなければならないようで、現在はXML出力用のphpもエントリー「cmsdesigner/data/entry/○○○○」ディレクトリに保存して参照させています。

何だか自分でもこの設定が引っかかっていて、せっかくシンプルにCMS化できるCMSDesignerなのに、FLASHを使うととたんにデザイン定義ファイルが増えていき、しかも複雑になってしまいます。特にリスト表示を利用しようとするとなおさらなようです。

そもそも、FLASHやこのスクリプト自体色々と制限が多く、パーミッションやセキュリティー関連、パスに非常に敏感なスクリプトですので、もしかもするとCMSDesigner向きではないかも知れませんねぇ・・・。 検証にも時間がかかってしまいますね。
コンテンツの一部に利用するより、「null」で書き出してフルFLASH化したほうが早そうです(汗)

ともあれこのシンプル設計なCMSDesignerは、使い手によってはとてつもない可能性を秘めていますので、色々試行錯誤しながらより良いアプリケーションになるお手伝いができればと思っています。 がんばってください!

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

Re: できました!

投稿記事 by webmaster » 2005年11月05日(土) 00:23

 mooryさん、ご報告ありがとうございます。

 なんと、Flashはそんなにセキュリティがガチガチなのですか・・・!?
 実は、FlashはPublishする前の、ローカルでの実行でしか試しておりませんでした。
 Flashそのものに慣れていない為、中途半端な確認しかできずご迷惑をおかけ
しました。m(_ _)m

 こちらでもちゃんとサーバにpublishしていろいろ試してみたいと思います。
 FlashやAjaxとの連携は大きな可能性を秘めていると思いますので、なんとか
使いやすい形へと進化させていきたいと思います。

 ところで、画像へのパスですが、相対パス指定ではなくhttp://〜から始まる
絶対パス指定ではいかがでしょうか。
 実は、こちらでloadMovieを試したときは、絶対パスで指定しておりました。
<collection>http://yourdomain.com/cmsdesigner/data/ ... l:value-of select="Rtitle/@src" /></collection>
<jpg>http://yourdomain.com/cmsdesigner/data/ ... l:value-of select="Rproducts/@src" /></jpg>
 こんな感じになるかと思います。
 またお時間あるときで結構ですので、ご興味ありましたら一度お試しください。

moory

絶対パス指定で大丈夫でした。

投稿記事 by moory » 2005年11月07日(月) 21:52

早速ですが、URLからの絶対パス指定でテストしてみたところ無事画像表示できましたよ。  先述の「動的かつ動く(モーションする)リスト」のFLASHでも、SWFとXMLが同じ階層に無くても画像を読みこんでくれるようになりましたので、無事表示できています。

ところでこの「動的かつ動く(モーションする)リスト」のFLASHなんですが、私が基本的なCMSDesignerの考え方として理解して実践したのが、
1 個別エントリーに、ユニークなIDのついたJPGとそれを読み込むユニークなIDのついたSWFをエントリー。
2 このSWFをリスト表示させて、クリックすると個別エントリーページにジャンプする。
という感じなのですが正しいでしょうか?

一応表示はできるのですが、この方法ですと、ユニークなIDのついたSWFが読みに行くXMLファイル自体(ファイル名?)に、エントリーIDを指定与えてやらないといつも最終エントリーの画像しか表示されなくなってしまいますよね? 

具体的には、00001のエントリーの際にA.jpg とA.swfをアップロード、エントリーフォルダー内には、abc.00001.00000001.jpgとabc.00001.00000002.swfが保存されますが、そのA.swf(abc.00001.00000002.swf)が読みに行くXMLはいつも同じabc.flash.design.xslを介して出力されたabc.flash.design.phpではなく、abc.flash.design.php?eid=00001とならなければいけませんよね。これはXMLを生成するphp側でoutput属性を設定したり、XSLT側で処理するものなのでしょうか?

それとも、個別エントリーではなく一覧表示のXMLを出力し、それをFLASHで表示させたほうが無難なんでしょうか? ただその場合ですと、表示件数はFLASHに依存しますし(ノードの取得件数による)、CMSDewsignerのナビも使えなくなりますよね。
それはもったいないと思って個別エントリー表示で何とかしたいと思うのですが?

スレがとても長く、質問も多岐にわたってしまい恐縮なのですが、他のFLASH利用希望者様にも参考になればと思い書かせていただきました。

よきアドバイスをお待ちしています。 :)

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

Re: 絶対パス指定で大丈夫でした。

投稿記事 by webmaster » 2005年11月08日(火) 00:37

 webmasterです。mooryさん、手探り状態にも関わらずいろいろと試して
頂き、本当にありがとうございます。
 本当はこの辺のチュートリアルを弊社で用意すべきなのですが、手が
まわっておらずご迷惑をおかけします。

 mooryさんのされようとしていることを私が完全に理解しているかどうか
怪しいのですが、こんな感じがやりやすいのではないか、という提案を
させて頂きます。

■一つ目の案:エントリ一覧:HTML、エントリ詳細:Flash の場合

 ・エントリ一覧は、普通のHTMLとして表現します。単に、各エントリのタイトル
  を羅列し、タイトルをクリックするとそれぞれのエントリの詳細を表示する
  Flashファイルを表示するようにします。Flashには、URLパラメータとして
  エントリIDを渡すようにします。

 ・エントリ詳細表示用Flashでは、URLパラメータからエントリIDを取得して、
  読み込むエントリ(XML)データをPHPに対して指定するようにします。
  Flashへパラメータを渡す方法は、次の記事が参考になりそうです。
  http://www.gac.jp/article/index.php?sta ... sg&id=6915

 ・エントリ(XML)データを出力するPHPは、Flashからeidを与えられます。
  よって、指定されたエントリのXMLデータを返すことができます。

 ・エントリ詳細用Flashは、PHPから返されたXMLデータを元にjpgファイル
  のファイル名を知り、それをロードして表示します。

 以上です。
 よって、この方法では各エントリに保存されているのはタイトルとjpgファイル
のみであり、エントリ詳細表示用のswfファイル自体は独立して1つのみサーバ
上に存在することになります(このswfファイルはCMSDの管理対象外です)。

 もう一つ、エントリ一覧も含めて全てFlashでコーディングする方法もご提案
致します。

■二つ目の案:全て1つのFlashで完結させる方法(1)

 ・このFlashが表示されると、まずFlashはCMSDに対して「エントリ一覧の
  XMLデータ」を要求します。このエントリ一覧には、タイトルとjpgファイルの
  パスが含まれます。全件を一気に取得します。

 ・エントリ一覧を取得し終わったら、タイトル一覧を表示します。。

 ・もし、エントリ全件を一気に取得したくなければ、CMSDのリファレンスマニュアル
  を参考に、「前ページ番号」と「次ページ番号」を取得して、それらを使って
  エントリ一覧を切り替えるようにしてもOKです。

 ・タイトルがクリックされたら、先ほど取得したXMLデータから、対応するjpg
  ファイルのパスを取り出し、そのjpgファイルをloadMovieします。

 以上です。

 いかがでしょうか。
 二つ目の案は、エントリ一件分のデータが少ないので最初に全てのデータを
取得してしまっていますが、エントリ一件分のデータが多い場合には、待ち時間を
軽減する為に、最初にエントリタイトルのみを一覧で取得し、タイトルクリック時に
個別のエントリデータを取得して表示する・・・という方法も有りかと思います。

 当方の回答がかなりズレている可能性もありますので、その場合はご指摘下さい。
 また、ご不明な点はどんな些細な点でも構いませんのでご連絡ください。m(_ _)m

moory

FLASHでのリスト書き出しに成功しました!

投稿記事 by moory » 2005年11月10日(木) 12:50

いつも迅速なご対応に感謝します。
まさにwebmaster様のおっしゃる「一つ目の案」がやりたかったことで、パラメータを渡してやる事で無事にFLASHのみのリスト表示させる事ができました。
一応パラメーターはこのような感じで記述しています。
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
ちなみにこの場合、リスト表示なので問題ないのですが、詳細ページでFLASHを3つ配置し「次のページのFLASH」と「現在のページのFLASH」「前のページのFLASH」を表示させたい場合は「={@id + 1} 」「={@id} 」「={@id - 1} 」的な事を記述する事で対応できるのでしょうか?

現在は1ページを上段・下段に分けて合計9ページのセクションをコントロールできるような形になっています。
■上段
リスト表示3件分(FLASH)
CMSDが自動的に生成するナビゲーション(<< >>)
■下段
詳細表示
この状態で、上段のFLASHをクリックすると各ページにジャンプする設定としております。

ただしこの方法ですとジャンプした先のページの上段部分は、いつも最終エントリから3件分のリスト表示になってしまいますのでちょっと使い勝手が悪いかもしれません。
基本的には常に9ページでの構成なので(3で割り切れる数です)グループ化等で対応し、下段の詳細に1・2:3のいずれかを表示した場合は、上段も1・2・3の組み合わせに、下段の詳細に4・5・6のいずれかをを表示した場合は、上段も4・5・6の組み合わせにしようかと考えておりますが他に良い方法はありますでしょうか?

ユーザーズフォーラムの「動的ページへのジャンプ機能」等を拝見しているとnavi要素では、現在のページの位置を取得できるようですので、
「リスト表示でのページIDを取得、対応したエントリIDの詳細表示」もしくは「詳細表示のエントリIDを取得、対応したページIDのリスト表示」というような事は可能でしょうか?

CMSDはいじればいじるほど奥深く、どんどん贅沢な悩みが増えてゆき(若干ハマっている気もしますが(笑))とても楽しいです。
サイトが完成した暁には是非こちらでご紹介していただければと思います。

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

Re: FLASHでのリスト書き出しに成功しました!

投稿記事 by webmaster » 2005年11月10日(木) 16:04

 webmasterです。

 あるエントリに対して「前のエントリ」と「次のエントリ」の情報を得るには、
リファレンスマニュアルの「5.5.9 「次のエントリへ」「前のエントリ」への
リンクをつける」が参考になると思います。

 もし既にご存知でしたら申し訳ありません、再度ご連絡いただけましたら、
ご不明な点について説明させて頂きます。

 また、もう一つのご質問の「現在表示されているエントリに連動して、
エントリ一覧を切り替えたい」というご要望(だと認識しております)については、
次かその次あたりのバージョンで搭載される予定となっております。
 逆に言うと、現在は仰るとおり、最新n件の表示しかできません。m(_ _)m

 年内には対処する予定ですので、どうかお待ちいただければと思います。

 ところで、出来上がりがとても楽しみです。
 よろしければぜひ、ご披露頂ければ幸いです。

moory

エントリ単位でのほかのエントリ内容の表示

投稿記事 by moory » 2005年11月10日(木) 17:00

文章ではわかりにくかったようでスミマセン。
具体的には、
下記のように「00008」のエントリ詳細ページに「00009」「00007」のFLASHを配置しリンク先「@herf」を設定したい。
と言う内容でした。

┏━━━┓ ┏━━━┓ ┏━━━┓
 00009   00008   00007
┗━━━┛ ┗━━━┛ ┗━━━┛
<<前 | 次>> (←この部分はCMSDのナビゲーションで出力しています)

┏━━━┓
 00008   
┗━━━┛
0008の詳細1
0008の詳細2
0008の詳細3

現在はかなり無理やりこんな感じでパラメーター指定してごまかしてみました。(笑)
次へ
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid=0000{@id + 1}" />

前へ
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid=0000{@id - 1}" />
ちなみにコレ、桁が変わるともちろん無効です(笑)
きっと正しい記述方法があると思うんですが・・・。

しかしこのあたりの知識は何を勉強すれば身につくものなんでしょうか?
PHP? XSLT?それともFLASH?
もっと勉強しなきゃ・・・のmooryでした。

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

Re: エントリ単位でのほかのエントリ内容の表示

投稿記事 by webmaster » 2005年11月10日(木) 17:46

 webmasterです。
 ありがとうございます、mooryさんのされたいことが理解できたと思います。

 これは、現在表示されているエントリの前後のエントリを表示したい、という事
だと思います。
 実は、CMSDでは「現在のエントリの前後のエントリの詳細」を取得する機能が
ない為、通常はご要望を実現することができません。

 しかし、今回は「詳細を表示する」のはflashであり、CMSDとしてはFlashに
エントリIDだけを渡せばいいので、以下の隠し機能(というかリファレンスマニュアル
に記載してないだけです(^^;)を使って実現することができそうです。
<xsl:for-each select="navi">
<!-- 前のエントリ -->
<xsl:for-each select="prev">
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
</xsl:for-each>

<!-- 現在のエントリ -->
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={/entry/@id}" />

<!-- 次のエントリ -->
<xsl:for-each select="next">
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
</xsl:for-each>

</xsl:for-each select="navi">
 具体的には、/entry/navi/prev や /entry/navi/next の中で @href では
なく、@id を使うことができます(マニュアル未掲載)。
 ここで @id を使うと、現在のエントリIDではなく、前後のエントリIDを取得
することができます。

 ナビゲーションの内部で現在のエントリを出力する場合には、XMLの相対位置
が/entry/navi になってしまっているので、絶対パス指定で「/entry/@id」と
書いています。

 この辺、XSLTとXMLにかなり慣れていないと難解だと思います。
 意味が分からなくてもあまり気にせず、いろいろとお試し頂ければと思います。

 XSLT的に少々冗長な方法ですが、以下の方がまだ分かりやすいかもしれません。
<xsl:for-each select="navi">
<!-- 前のエントリ -->
<xsl:for-each select="prev">
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
</xsl:for-each>
</xsl:for-each>

<!-- 現在のエントリ -->
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />

<xsl:for-each select="navi">
<!-- 次のエントリ -->
<xsl:for-each select="next">
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
</xsl:for-each>
</xsl:for-each select="navi">
 これを、もう少し縮めると、以下のように書くことができますが、マニュアルの記述と
かけはなれて為、メンテナンスがしづらくなるかもしれません。
<xsl:for-each select="navi/prev">
<!-- 前のエントリ -->
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
</xsl:for-each>

<!-- 現在のエントリ -->
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />

<xsl:for-each select="navi/next">
<!-- 次のエントリ -->
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={@id}" />
</xsl:for-each select="navi">
 XSLTの知識があると、さらにCMSDをマニアックに使いこなせるかと思いますが、
できればあまりマニアックにならなくても使えるようにしたいと考えております。
 今回の件も今後の機能改善の参考にさせて頂きます。m(_ _)m

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

Re: エントリ単位でのほかのエントリ内容の表示

投稿記事 by webmaster » 2005年11月10日(木) 17:52

 追記です。

 多少マニアックになってしまうのですが、
 mooryさんが作ってくださったXSLTで、「00001」などの形式で出力を行うには、
 format-numberというXSLTの関数を使います。

 http://www.atmarkit.co.jp/fxml/tanpatsu ... slt10.html
 http://www.cityfujisawa.ne.jp/~yanai/xm ... tep15.html
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid=0000{@id + 1}" />
 の部分を、
<param name="movie" value="../../../cmsdesigner/data/entry/abc/abc.swf?abcdata=?eid={format-number(@id + 1,'00000')}" />
 のようにすると、おそらくうまく行くのではないかと思います。
 以上、ご参考までにどうぞ。 :)

moory

これです!

投稿記事 by moory » 2005年11月10日(木) 18:12

:lol: webmasterさま
これです!
かれこれ3週間近くCMSDとにらめっこしてますからnextやprevと@idをうまく使えばできそうなのは想像できるのですが・・・、後一歩でした。
本当にwebmasterさんに頼りっぱなしでスミマセン。

しかしCMSDは奥が深いですね。出来る事がありすぎてチュートリアルやリファレンスに書ききれないのがよくわかります。 今回の「現在のエントリの前後のエントリの詳細」にしても「単体では不可能でも他のアプリケーションと組み合わせる事によって可能になる」と言うような事例も色々あるんでしょうね。

おかげさまで、これでほぼサイト構築に必要なパーツが出来上がりましたので完成に一歩近づきました。 ありがとうございました。 公開の際には真っ先にお知らせしますね。おっとその前にもう少しXSLTを勉強しておかないと・・・(笑)

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

Re: これです!

投稿記事 by webmaster » 2005年11月10日(木) 22:26

 webmasterです。
 こちらこそ、いろいろなアイデアを頂けて本当に参考になっております。
moory さんが書きました:今回の「現在のエントリの前後のエントリの詳細」にしても「単体では不可能でも他のアプリケーションと組み合わせる事によって可能になる」と言うような事例も色々あるんでしょうね。
 実は、今回の件はまったく想像しておらず、「そうか、Flashと組み合わせると
こんなこともできるんだ!」と、mooryさんに気づかせて頂きました。

 Flashでなくとも、未だとAjaxを使っても同じ事ができそうです。
 (これもまだ実際にサンプルを作っていないので、どなたか試して頂けない
かと・・・いや、自分でやらないといけませんね。(^^; )

 また何かありましたらいつでもご連絡ください。
 公開を楽しみにしております。

返信