モダンなXML出力方法について
XHTML2は残念なことになってしまいましたが、HTML5にしろフィードにしろ、XML構文が重要なことにはかわりのない昨今みなさんいかがお過しですか。ずいぶんとエントリの間隔が空いてしまって申し訳ありません。
さて、XMLの出力には
- to_xml()のようなメソッドを呼ぶ
- RubyのBuilderのようなDSLを使う
- テンプレートエンジンを使う
- 手書き
などの方法が考えられますが、今回の本題はこれらの方法によって生成される最終的なXML文書(インスタンス)はどう表現されるべきか、についてです。
エンコーディングはUTF-8で
これはもう説明不要ですね。UTF-8が処理できない環境というのは本当に少くなりました。モバイルや組込み等でどうしても対応できない場合以外はUTF-8を使うのが望ましいと思います。
実体参照の件
実体参照というのはXML内で文書の一部に名前を付けて再利用する仕組です。たとえば「&」という文字(文字はXML文書を構成する最小単位です)を出力するときは、XML文書に直接記述することができないので「&」とエスケープします。XML仕様では&や<など5種類の実体参照がビルトインで定義されていますが(これを定義済み実体と呼びます)、DTDを使うことで自分で好きな実体参照を定義することもできます。たとえばハートマーク(♥)を出すために「♥」と書くというのはよく知られているでしょう。この「♥」という実体参照はHTMLのDTDで定義されています。
HTMLのDTDで定義されている実体参照を使うためには、DOCTYPE宣言(「<!DOCTYPE」で始まるものです)でHTML/XHTMLのDTDを読み込まなければなりません。HTMLで定義されている実体参照は個別のファイルで定義されているので(例)、特にHTMLでない文書型を使う場合でもこれを個別に読み込めばHTMLで定義されている実体参照を使うこともできます。
しかし、モダンなXML文書ではDOCTYPE宣言を付けないものもあります。たとえばAtom仕様にはDTDがありません。仕様にDTDがないとしても、DOCTYPE宣言を付けることは可能ですが、通常のライブラリはAtomフィードを出力するときにDOCTYPE宣言を付けないのが一般的です。
このような場合にハート記号を使いたくなったらどうすればいいのでしょうか。まずはその文字を直接入力できないか考えてみましょう。ハート記号を表示するのにわざわざ実体参照を使う必然性はないのです。エンコーディングがUTF-8であれば、その文字をそのまま出力すればよいでしょう。
もし何らかの理由でどうしても直接入力したくない場合は、実体参照を使うのではなく数値文字参照を使うのがよいでしょう。たとえばハート記号は♥です。
xml:baseは使わずに絶対URIを利用する
xml:base属性を使うと相対URIを解決するための基底URIを設定できるのですが、
これをきちんと解釈してくれないクライアントやライブラリがいるのも事実です。
なので、ハイパーリンクとしてURIを埋め込むときには、たとえ同じサイト上
のリンクでも絶対URI(「http://」で始まるURI)を使うのがよいでしょう。
Tags: xml

Gaga attributes quite a bit of her earlier achievements as a mainstream performer to her gay supporters and is certainly regarded to be a lesbian and gay star
Jennifer Lopez is keen to go back to her local New York so she can take care of her kids in a “normal” environment out of town from all of the glitz of Hollywood. The occasional actress grew ” up ” in the Big Apple, yet , now resides in Los Angeles in order to concentrate on their very own showbiz careers.
I find the talk about ricollab Web Tech Blog » Blog Archive » モダンãªXML出力方法ã«ã¤ã„㦠all a bit meaningless. Political leaders and central bankers round the planet have done everything they can to preserve failed banks, and lending that was imprudent from the onset. We will not have a real sustainable recovery without an end to deficit spending and lots of financial institutions going bust. I find discussion about personal finance and loans a bit meaningless. I also think the home costs have to fall a lot even now. I mean why would you want to own a home in Spain or the UK? Isn’t it much more cost effective to rent? Regards, Pauline Woolums