2009年1月28日水曜日

XMLを扱う (その7) [Atom]

Atomを例に名前空間の理解の確認を。

Atomでは、xhtmlの要素も使える。

それにはまずxhtmlの語彙を指定する。

---
namespace xhtml = "http://www.w3.org/1999/xhtml"
---

これで語彙は使えるようになるが、その語彙が母体たるAtomの中でどのよ
うな構造の一部となるかは、AtomのSchemaの中で指定しなければならない。

それにはまず、xhtml:*の形の要素の定義が必要。

---
# XHTML

anyXHTML = element xhtml:* {
(attribute * { text }
| text
| anyXHTML)*
}

xhtmlDiv = element xhtml:div {
(attribute * { text }
| text
| anyXHTML)*
}
---

それを母体の要素でどのように使えるかは次のように定義。

---
atomXHTMLTextConstruct =
atomCommonAttributes,
attribute type { "xhtml" },
xhtmlDiv

atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct

atomTitle = element atom:title { atomTextConstruct }
---

これをatom上で利用するには次のよう。

---
...
<title type="xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xhtml:div>
Less: <xhtml:em> < </xhtml:em>
</xhtml:div>
</title>
...
<summary type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
This is <b>XHTML</b> content.
</div>
</summary>
...
<summary type="xhtml">
<xh:div xmlns:xh="http://www.w3.org/1999/xhtml">
This is <xh:b>XHTML</xh:b> content.
</xh:div>
</summary>
...
---

ふむ。理解に間違いはなさそうだ。
それにしても、

anyXHTML = element xhtml:* ...

と書けるRelax NGって便利だなぁ。


なかなかCLに辿りつけないが、こつこつ。

0 件のコメント: