RSS1.0のitemとlinkの関係

このQ&Aのポイント
  • RSSファイルを作成する際、itemタグのrdf:about属性とlinkタグの関係について調査しました。
  • goo RSSリーダーでは、itemタグのrdf:about属性の値に関わらず、linkタグの値が同一の場合は同一のitemとして扱われるようです。
  • このgoo RSSリーダーの仕様は、RSS1.0の仕様とは異なるようです。
回答を見る
  • ベストアンサー

RSS1.0のitemとlinkの関係

さきほどから、自分のサイトの更新情報を載せるべく、RSSファイルを作ろうと考えていました。 Headline-Editor Liteというのソフトを使って作ってみました。 http://www.infomaker.jp/editorlite/ 更新情報としては、その内容を載せるつもりなのですが、 アドレスはトップページで固定しようと考えていました。 このソフトで、RSSファイルを作成すると、 itemタグのrdf:about属性に、「指定アドレス+#he日付」という値をいれ、 itemタグ内のlinkタグに、「指定アドレス」を入れて、RSSファイルを生成します。 こうして生成したRSSファイルをサーバーにあげて、 Headline-Readerで確認すると、当たり前ですが、正常に取得できます。 http://www.infomaker.jp/headline/ ところが、goo RSSリーダーでは、最新の1itemしか取得できません。 http://reader.goo.ne.jp/ RSS1.0の仕様によると、itemタグのrdf:about属性の値は、一意でないといけないようです。 http://www.net.intap.or.jp/INTAP/s-web/data/TR/1-2.html#s5.5 しかし、その値は、linkタグ内の値と一致していなくてもよいようです。 (文章を読むと、一致させることが推奨されているようですが) RSSファイルをいじって調べてみたところ、 goo RSSリーダーでは、itemタグのrdf:about属性の値に関わらず、 linkタグ内の値が同一のものは、同一のitemとして扱う仕様になっているようです。 このgoo RSSリーダーの仕様は、RSS1.0の仕様に基づいたものとは思えませんが、 やはりgoo RSSリーダーの独自仕様なのでしょうか? ご存知の方がいらっしゃいましたら、教えてくださいm(_ _)m

noname#22592
noname#22592
  • XML
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • MASATO3
  • ベストアンサー率60% (27/45)
回答No.1

> このgoo RSSリーダーの仕様は、RSS1.0の仕様に基づいたものとは思えませんが、 RSS 1.0の仕様は、データのフォーマットの仕様であって、データの管理方法や、データの表示方法を定めた仕様ではありません。 ですので、goo RSSリーダーが1itemしか表示しないという動作とRSS 1.0の仕様は無関係です。 また、ユーザの利便性を考えても、goo RSSリーダーの動作に何か問題があるとは思えません。むしろ、これはこれで使いやすい、と考えることもできます。 例えば、こんな考えです。 linkが示すURLが同じでしたら、それが示すコンテンツも同じと考えます。 同じコンテンツを示すitemが複数あるということは、どれか一つのitemが最新の正しい情報を示し、残りのitemは古い(そして既に正しくない)情報を示している、と考えたとします。 そうなると、最新と思われる情報を1つだけ表示し、残りの情報は表示しない、という動作は自然なように思えます。 というわけで、goo RSSリーダーに問題があるとは思えません。 今回の問題の根本はここです。 > 自分のサイトの更新情報を載せるべく、RSSファイルを作ろうと考えていました。 RSSは、サイトの更新情報を配布するための仕様ではありません。サイトの要約を配布するためのフォーマットです。 つまり本来の目的外のことに使用しようとしているわけです。無理がでるわけです。 サイトの更新情報ではなく、サイトの要約をHeadline-Editor LiteでRSSファイルとして作成し、それを配布することをお勧めします。 サイトを変更したときに、RSSファイルも変更後の内容に合わせて変えましょう。 大抵のRSSリーダーは、RSSファイルの変化を分かりやすくユーザに提示するようになっていますので、結果的にサイトが更新されたことがユーザに伝わるはずです。

関連するQ&A

  • RSS2.0でitemが空の場合の記述

    RSSフィールド(RSS 2.0)を出力するWebアプリを作成しています。 itemが0件の場合はfirefoxのライブブックマークで 「読み込みに失敗しました」 になります。 itemは次のように記述しています。 <items /> goo blogのRSSは、firefoxで"(空)"と表示されます。 中身を見ると、 <items> <rdf:Seq /> </items> と出力しています。ただし、RSS1.0です。 RSS2.0でitemが空の場合、どのように書けばよいでしょうか?

    • 締切済み
    • XML
  • RSSのタイムスタンプについて

    FNNのニュースヘッドラインをGoo RSSリーダーで読んでいます。RSSリーダーのタイムスタンプがおかしいのですが、タイムスタンプは、FNNが送ってくるXMLの中のデータですか?

    • ベストアンサー
    • XML
  • RSSの確認方法

    最近RSSってやつを導入しようと思い、 解説サイトを見て、見よう見まねで導入してみました。 PCに、ping送信ソフトの「ぶろっぐぴんぴん」と、 RSSリーダの「Headline-Reader Lite」 (http://www.infomaker.jp/readerlite/) RSSファイル作成ソフトの「Headline-Editor Lite」 (http://www.infomaker.jp/readerlite/) をインストールし、 「Headline-Editor Lite」で「rdfファイル」と「xmlファイル」を作成し、 サイト上に「rdfファイル」と「xmlファイル」を置き、 「ぶろっぐぴんぴん」でping送信しました。 「ぶろっぐぴんぴん」のステータスで確認したところ、ping送信は成功しています。 ですが、送信したRSSを読むやり方がわかりません。 どのようにすればよいのでしょうか。。。

  • RSSをデータベースに格納できない

    昨日教えていただいたコードで格納して表示するところまで成功しました。 自分の不注意でデータベースネームと違う、新規作成したテーブルに格納していたため起こったエラーでした。申し訳ありません。 再度全体のコードと組み合わせてみたのですがエラーが起こり困っております。 Uncaught Error: Call to a member function insert() on null <?php $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf', ]; foreach ($url1 as $url) { $count = 0; $rss = simplexml_load_file($url); foreach ($rss->item as $item) { if ($count >= 8) { break; } ++$count; $title = (string) $item->title; //「$item->title」だけではうまくいかないのでstringにキャスト $link = (string) $item->link; //以下同じ $thumb = (string) $item->thumb->url; $content = (string) $item->description; $wpdb->insert('rssfeed', ['title' => $title, 'link' => $link, 'thumb' => $thumb, 'content' => $content], ['%s', '%s', '%s', '%s']); } } $results = $wpdb->get_results('SELECT * FROM rssfeed'); foreach ($results as $item) { echo $item->title.'<br>'; } ?> <?php $wpdb->show_errors(); ?>

    • ベストアンサー
    • PHP
  • rdfをIE7に認識させるには

    自分のサイトでRSSを配信したいと思い、新着情報を書き込む際にinndex.rdfを生成するWEBアプリを作っています。 index.rdfを生成して、サーバーに保存するところまではできました。 ところがインターネットエクスオプローラー7で確認したところ、RSSと認識していないようで、タイトルとURLと概要をずらずら並べたような文章が表示されました。 .htaccess も作成して「AddType application/xml .rdf」と記載しています。 goo RSSリーダーで試したところ、問題なく表示されました。 どこに問題があるのでしょうか。 ----------------- <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns/" xmlns="http://purl.org/rss/1.0/" xmlns:lang="ja" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" > <channel rdf:about="RDFファイルのURL"> <title>HPの名称</title> <link>HPのURL</link> <description>HPの紹介文</description> <items> <rdf:Seq> <rdf:li rdf:resource="記事のURL1" /> <rdf:li rdf:resource="記事のURL2" /> </rdf:Seq> </items> </channel> <item rdf:about="記事のURL1"> <title>タイトル1</title> <link>記事のURL1</link> <description>概要1 </description> </item> <item rdf:about="記事のURL2"> <title>タイトル2</title> <link>記事のURL2</link> <description>概要2 </description> </item> </rdf:RDF>

  • 楽天広場のブログをRSSリーダーに登録する方法

    goo RSSリーダーver.2.0を使っています。ライブドアのブログは「Syndicate this site (XML) 」というrdfファイルが各ブログに載っているのですぐ出来たのですが、楽天広場の個人の各日記をみても相当するものが見当たらず方法がわかりません。そもそも楽天広場はRSSリーダーに登録できないのでしょうか?

  • RSSの格納、表示がうまくいかない

    データベースへの接続は完了したんですが、RSSの格納がうまくいきません。 エラー文も表示されず原因がわからないのですが、おかしな文はありますでしょうか? <?php require_once(dirname(dirname(dirname(dirname( __FILE__ )))) . '/wp-load.php' ); //ファイルの先頭で読み込む try { $dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost'; $user = 'hlxclitx_wp1'; $password = 'E.HrypHWxNmltXgC5eS26'; $dbh = new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } $url1 = [ 'http://blog.livedoor.jp/dqnplus/index.rdf', 'http://alfalfalfa.com/index.rdf', 'http://himasoku.com/index.rdf',]; //itemを取り出して$rssに渡す $date = $rss->channel->date; // RSSアイテム取得 値の代入 自作関数 //SQL文を実行、結果を求める $stmt = $dbh->prepare('insert into hlxclitx_feed_rss (data) values (?)'); //$url1配列から先頭のデータをとりだして$urlに渡す なくなるまでループする foreach ($url1 as $url) { //rssがほしいから、もらった$urlを渡す if (($rss = @simplexml_load_file($url)) === false) continue; // RSSタイトルがほしいから、もらったrssを渡す $site_title = $rss->channel->title; //初期のカウント $count = 0; //itemを取り出して$rssに渡す ループ foreach ($rss->item as $item) { //8件を超えたとき取得を終了する if (++$count > 8) break; //タイトル、リンクを取得 $title = $item->title; $link = $item->link; //RSSの情報を取得 $dc = $item->children('http://purl.org/dc/elements/1.1/'); //RSS日付け取得 $date = date('Y-m-d H:i:s', strtotime($dc->date)); // $title, $link, $date を表示 $stmt->execute[json_encode($item)]; } } ?> 補足情報(FW/ツールのバージョンなど) db name hlxclitx_wp1 table name hlxclitx_feed_rss テーブル名 (data) 名前 item

    • ベストアンサー
    • PHP
  • RSS2.0の書き方

    自分のHPのRSSフィード(RSS2.0)を書いたのですが、RSSリーダー(RSSリーダーは既にある前提)で何故か読めません。どこが悪いのか、御指摘いただければ幸いです。 ・RSSフィード名:rss.xml(rss.txtで下記のものを作成して、utf-8に変換してから、拡張子を.txt -> .xmlに変更) ・TOPのHTMLファイルのheadタグ内に以下を記述して、RSSフィードの置いてある場所を指定 : <link rel="alternate" type="application/rss+xml" title="RSS" href="[RSSフィードのあるアドレス]" /> ・RSSフィードの内容: <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="ja"> <channel> <title>[サイトのタイトル]</title> <link>[サイトのアドレス]</link> <description>[サイトの紹介、説明文]</description> <language>ja</language> <item> <title>[エントリーのタイトル]</title> <link>[エントリーのアドレス]<link> <guid isPermaLink="true">[エントリーのアドレス]</guid> <category>[エントリーのカテゴリー]</category> <pubDate>[作成日時]</pubDate> <description><[エントリーの紹介文]></description> </item> </channel> </rss> (注)[作成日時]は、Wed, 10 Mar 2010 23:32:13 +0900 のように記述しています。 以上なのですが、何が駄目なのでしょうか? よろしくお願い致します。

    • 締切済み
    • XML
  • RSS1.0から取得した日付の書式変換

    ごちゃまぜRSSリーダーforPHP(http://www.vector.co.jp/soft/unix/net/se334908.html)を使ってRDFファイルから日付を取得しようとしています。 item['dc']['date'];と記述し 2006-04-07T19:39:44+09:00 と日付を取得することは できたのですが 本当は 2006/04/17 と表示したいと思っています。 どのように書式を変換するのでしょうか? ご教授お願いします

    • 締切済み
    • PHP
  • スクリプトの解説してもらいたいのですが・・

    このRSSを生成するスクリプトを翻訳して欲しいというか、解説してもらいたのです・・・勉強しろ!と怒られるかもしれませんが、何とか教えていただければ助かります。 ====================== $item_title = "dt"; #タイトルとリンクを抜き出す要素 $item_descr = "dd"; #説明文を抜き出す要素 $host = "http://your.domain"; #ソースからタイトル、リンク、説明文を抽出 while(<>){ if(m|<${item_title}.*?><a href="(.*?)">(.*?)</a>|){ $link[++$items] = $1; $items_list .= qq( <rdf:li rdf:resource="$host$1"/>\n); $title[$items] = $2; $isItem = 1; }elsif(m|<${item_descr}.*?>(.*?)</${item_descr}>| and $isItem){ $str = $1; $str =~ s/<.*?>//g; #不要なマークアップを削除 $descr[$items] = $str; $isItem = 0; #説明文は1要素だけにしておく } } #以下、RSSの構文に従って出力 print <<EOF; <?xml version="1.0" encoding="utf-8" ?> <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xml:lang="ja"> <channel rdf:about="http://your/rss/file"> <title>Your Channel Title</title> <link>http://your/home/page</link> <description>Your channel description</description> <items> <rdf:Seq> $items_list </rdf:Seq> </items> </channel> EOF for $i (1..$#link){ print <<EOF; <item rdf:about="$host$link[$i]"> <title>$title[$i]</title> <link>$host$link[$i]</link> <description>$descr[$i]</description> </item> EOF } print "</rdf:RDF>\n";

専門家に質問してみよう