Hatena::Groupmoz-addon

there.is.only.memo

2008-02-26

XML datasource メモ

| 22:47

Gecko 1.9 以降では XUL テンプレートの datasource に XML や mozStorage が使えるようです。

ということで、テンプレートを使って Atom フィードを表示させてみます。

以下のような Atom フィードを考えます。

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>フィードのタイトル</title>
  <!-- 必須要素も含めて以下略 -->
  <entry>
    <title>エントリ1のタイトル</title>
    <summary>エントリ2の要約</summary>
    <!-- 必須要素も含めて以下略 -->
  </entry>
  <entry>
    <title>エントリ2のタイトル</title>
    <summary>エントリ2の要約</summary>
    <!-- 必須要素も含めて以下略 -->
  </entry>
  <!-- 以下略 -->
</feed>

entry の下の title と summary を表示させるには以下のようになります。atom.xmlxul と同じフォルダにおいてください (chrome 特権は必要ありません)。

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        title="Simple atom feed viewer">
  <label value="Feed entries..."/>
  <listbox datasources="atom.xml" ref="*" querytype="xml">
    <template xmlns:atom="http://www.w3.org/2005/Atom">
      <query expr="atom:entry">
        <assign var="?titleStr" expr="string(./atom:title)"/>
        <assign var="?summaryStr" expr="string(./atom:summary)"/>
      </query>
      <action>
        <listitem uri="?" label="?titleStr" tooltiptext="?summaryStr"/>
      </action>
    </template>
  </listbox>
</window>

スクリーンショット

http://taken.s101.xrea.com/tmp/xmldatasource.png

データは http://kuruman.org/diary/latest.rss

メモ

  • expr には XPath を書く
  • label="?bar" は ./@bar と処理される
  • bar 要素のテキストをとってくるには、assign 要素で string(./hoge) を適当な変数に割り当てておく
  • 名前空間がある場合には明示する
  • chrome 特権を持っていても、外部の XML はデータソースとして指定できない?

参考

XUL Template Guide が大進化してた!

LuckieLuckie2011/12/31 01:10That saves me. Thanks for being so sesbinle!

ephqgmephqgm2011/12/31 17:57a2fkF3 <a href="http://pqnjnjsbislp.com/">pqnjnjsbislp</a>

dgzwrhdgzwrh2012/01/01 23:08oD7MkV <a href="http://fcyqmqmdkpnu.com/">fcyqmqmdkpnu</a>