複数の外部rssを取得して、CMSDで振り分け表示する方法

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

複数の外部rssを取得して、CMSDで振り分け表示する方法

投稿記事 by bcacsato » 2012年3月22日(木) 12:42

複数の外部ブログのRSSを取得し、発信元が分かるような形でホームページに表示したいと思っています。

イメージとしては、下記のような形です。
・0000.00.00 ブログタイトル [●●ブログ]
・0000.00.00 ブログタイトル [◆◆ブログ]
・0000.00.00 ブログタイトル [■■ブログ]
無料サービスを使ってRSSをひとつにまとめ、CMSDと取り込もうと思ったのですが、
元のブログ名も表示させる方法が分かりません。

RSS中の<link>のURLをもとに判別することもできそうな気はするのですが、
記事ごとにURLの末尾が異なるため、xs:ifタグで判定することことができません。
「○○○が含まれる場合」とか「先頭の10文字が○○○の場合」といった条件指定ができれば
可能かと思うのですが、そのような方法も分かりません。

何かよい方法がありましたら、ご教示いただけますでしょうか。
よろしくお願いいたします。

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

Re: 複数の外部rssを取得して、CMSDで振り分け表示する方法

投稿記事 by webmaster » 2012年3月23日(金) 01:38

bcacsatoさん、いつもありがとうございます。

複数RSSのマージをすると、元のRSSのタイトル(サイト名)が失われてしまう、ということですね。
Yahoo!Pipesなどを使って一発ですべてできないものかと思ったのですが、Pipes内でrss:titleを取得する方法がちょっと調べきれませんでした(おそらく、方法はあると思うのですが…)。

ですので、xsltで「○○が含まれる場合」の方法についてご説明します。
xsltで「○○が含まれる場合」という方法は、contains関数を使います。xsl:ifやxsl:whenなどのtest属性の中で、「contains( データ名, '検索する文字列' )」の形で指定します。

例えば次のような感じです。

コード: 全て選択

<xsl:value-of select="title" />
<xsl:if test="contains(link,'http://www.yahoo.co.jp')">[Yahoo]</xsl:if>
<xsl:if test="contains(link,'http://www.google.com')">[Google]</xsl:if>
<xsl:if test="contains(link,'http://www.microsoft.com')">[Microsoft]</xsl:if>
うまくいくかどうかは含まれているURLの構造にもよるとは思うのですが、一度お試し頂ければ幸いです。

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

Re: 複数の外部rssを取得して、CMSDで振り分け表示する方法

投稿記事 by bcacsato » 2012年3月27日(火) 13:59

webmasterさま

ご回答ありがとうございます。
ご提示いただいた方法にて、希望通りの表示を実現することができました。
大変助かりました。

返信