tDiaryのRSSを見ていて、以下のような記述があるのに気づきました。
<xhtml:link xhtml:rel="alternate" xhtml:media="handheld" xhtml:type="text/html" xhtml:href="http://www.tdiary.org/" />
註: 接頭辞xhtml:
はXHTML名前空間URI(http://www.w3.org/1999/xhtml
)を指します。以下同じ。
XHTMLのlink要素をRSS 1.0に埋め込んでいるのですが、この書き方だとXML名前空間としてはおかしい、と思ったのです。
例えば、一般的なXHTML 1.x文書では、link要素は以下のように書かれます。
<link rel="alternate" media="handheld" type="text/html" href="http://www.tdiary.org/" />
この場合、link要素はデフォルト名前空間であるところのXHTML名前空間(http://www.w3.org/1999/xhtml
)に属することになりますが、デフォルト名前空間というのは属性には適用されないので、rel, media, type, href の各属性はどこの名前空間にも属していないものとして扱われます。
そのため、上記のlink要素と等価なものを(XHTML1文書ではない)XML文書に埋め込もうとするなら、
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdiary.org/" />
と、属性名には接頭辞(xhtml:
)をつけない形で書く必要があります。
ところで、このxhtml:link要素はどういうものなのかと追ってみたところ、Mobile Link Discoveryのサポートのために追加されたもののようでした。
実際にMobile Link Discovery 仕様を確認してみると、
<rss xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xhtml:link rel="alternate" media="handheld" type="text/html" href="{mobile URL}" />
<xhtml:link>
を<channel>
や<item>
の下に記述します。どちらも optional です。
と、RSSの場合は属性に接頭辞がつかない形で例が示されています。
makerss.rbのRevision 1.51で、xhtml:link要素の属性にはxhtml:
接頭辞がつかなくなるよう修正されたようです。