超不定期雑記

~プログラムとかサイエンスとかいろいろと~

目次

Blog 利用状況

ニュース

書庫

DTD

仕事で XML 形式のフォーマットを定義することになりまして、せっかくだからと DTD も書いてみることにしました。
今までは内部でしか使わなかったので特に必要性を感じなかったんですが、今度は外部とやりとりをすることになったので、チェックも兼ねて書いてみることにした次第です。

XML 形式のフォーマットを定義する方法には、おもに DTD と XML Schema の二種類があります。
DTD にはいろいろと問題点が指摘されていて、それを置き換えるために生まれたのが XML Schema ですが、それでもなお DTD を採用したのは、私が慣れているからw
HTML4.0 の頃はふつーに読んでたし。

ところがよくよく思い出してみると、 XML 時代の DTD って読んだことがないんですよ。
XHTML に移行したときも HTML4.01 との差分だけ覚えたんで、その DTD を読むことはしませんでした。
そこで復習もかねて HTML4.01 と XHTML1.0 の DTD を比較してみると……全然違うやん。

一番の違いは、開始/終了タグの省略可否。
# XML はどちらも省略不可だから、削られて当然だわな

そして、コメントの位置。
# 要素型宣言とかの中にコメント入れるよか、処理は楽だわな

てことで、XML の DTD について勉強し直すことになりました。


……うん、まぁ、だいたいわかった。
理解の甘い箇所がいくつもありますが、そこは書きながら調べるだけのこと。
何とかなるでしょ。

XML 文書と DTD を連携して検証するツールを見つけましたので、チェックも便利です。
http://park15.wakwak.com/~yoshitomo/junk/index.html
↑の「XML 検証インターフェース」
ダウンロードして、検証したい XML ファイルを D&D するだけ。

しかし DTD 最大の欠点は、文字種の制約をかけられないことでしょうね。
たとえば値として数値だけを許したい場合でも「文字列」としか表現できません。
真偽値は列挙型で代用できますのでまだマシですが、せめて整数型とか実数型ぐらいは定義しておいてほしかったです。
パターンマッチまであれば理想ですね。

これは XML Schema に移行することも考えた方がいいかなぁ。

投稿日時 : 2008年10月1日 12:04

Feedback

# re: DTD 2008/10/01 13:15 Streetw♪

ちょうど、XML Schema勉強しようと思っていたところでした!
XML Schemaのエントリ開始な予感に期待です~w

# re: DTD 2008/10/01 13:27 guicheng

ちょっwまっwwwwww

今のところの私の回答は、とりあえずDTDで書いて、日本語で仕様書起こして、XML Schema に翻訳する、です。
これが万人ウケするかは甚だ疑問ですが。

まだ DTD を書いている途中なので、XML Schema のエントリをあげるとしても遙か先になりそうな。

# re: DTD 2008/10/01 14:46 Streetw♪


了解しました~

# re: DTD 2008/10/01 15:37 aetos(旧シャノン)

> XML 形式のフォーマットを定義する方法には、おもに DTD と XML Schema の二種類があります。

RELAX NG というのもあります。
RELAX NG は DSDL という規格の一部で、DSDL にはほかにもいろいろ面白そうなものがあります。
が、俺は詳しくないので、そっちもレポートお願いしますと他力本願w
いや、冗談ですよ?

# re: DTD 2008/10/01 21:52 guicheng

RELAX NGについてさらっと調べてみました。
あー、これは確かにおもしろそうですね。
XML Schema を置き換えると銘打っているだけあって、ずいぶんと理解しやすそうです。
私は短縮構文の方が好みw

とはいえ、とりあえずは DTD、そのあと XML Schema でやってみたいと思います。

# re: DTD 2008/10/02 10:37 aetos(旧シャノン)

XML Schema は複雑すぎるとよく言われますが、そりゃ実装を作る側はしんどいかもしれないけど、使う側はわかんない機能は使わなきゃいいだけで、すべて理解する必要はないので、その点はあんまり対比の軸として適切だと思えないのですよね。
XML Schema と RELAX NG のそれぞれで、できることとできないことっていう軸で比べた資料ってないのかなぁと。
(実用的な範囲で)できることに違いがないのなら、俺は XML Schema でいいや、って思います。
って誰もそんなこと聞いてないか。

それにしても RELAX NG ってダサい名前ですよね。First が世に出なかったのに Next Generation とか入れんなよと。

タイトル
名前
Url
コメント