Firefox 2.0でRSS 1.0の製作者XSLTスタイルシートを適用

Firefox 2.0ではRSSやAtomなどのWebフィードをプレビューする機能が追加されましたが、それに伴って、フィードに指定された製作者XSLTスタイルシートが無視されるようになっています。

機能の是非はともかくとして、どうやってFirefoxが「Webフィード」と「単なるXML文書」を区別しているのかが謎だったので手元で色々試してみたところ、

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/style/rss.xsl" type="text/xsl"?>
<RDF:RDF
  xmlns="http://purl.org/rss/1.0/"
  xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

という風にRDFの名前空間接頭辞をrdf:からRDF:と変えるだけで、製作者XSLTスタイルシートを有効にできました。

名前空間接頭辞が違っていてもXMLデータとしては同等なはずなので、取り敢えず徒書のRSSを今のところそのようにしています。

* * *

その後、Firefox 2 でフィードの XSLT を有効にする: Days on the Moon経由でIE7のフィードの判別方法を知りました。Firefoxでも同じ判別方法を用いているらしく、またRSS 1.0の時はやはり <rdf:RDF とタグ名を名前空間接頭辞こみで見て区別しているそうなので、上記の動作に納得が行きました。

* * *

接頭辞について、念のためRSS 1.0仕様を確認してみると:

While any valid namespace prefix may be used, document creators are advised to consider "rdf:" normative. Those wishing to be strictly backward-compatible with RSS 0.9 must use "rdf:".

接頭辞はrdf:が標準であり、特にRSS 0.9との後方互換性を求めるならばrdf:を使うべき、とのことのようなので、逆に後方互換性を考えないのであれば他の接頭辞を使うことも可能、と言えそうです。

追記(2006年11月7日)

ちょっとしたメモ - IE7、Firefox2でもRSS1.0にXSLTを適用させるにて、接頭辞rdf:を変更させることの問題点と、名前空間URIを2つの実体参照に分割することで製作者XSLTを適用させる方法について述べられています。