ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  396  : 記事  0  : コメント  1030  : トラックバック  66

ニュース

さて、今年の秋は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

XML におけるコメントの書き方って、こうしている方がほとんどじゃないですか?
<appSettings>
    <!-- ログ保存先ディレクトリ設定 -->
    <add key="logDir" value="C:\log"/>
</appSettings>
私は定期的に XML におけるコメントの書き方ってこれでいいのかと?頭をよぎることがあります。
プログラミング言語において、コメントは 100% 人のためのものです。
しかし XML において、コメントはコメントノードという立派なひとつの構成要素であり、処理系から操作することができます。
処理系から操作できるということは、システムのためにコメントを書くのもアリだということです。
そして、コメントはほとんどの場合、どれかの要素の子要素です。(コメントはルート要素の外にも記述できます)
つまり、構造的にも関連を持たせるためには子要素にするのがよいのじゃないか?と思うのです。
要するに、上記の例で言うと下記のようにということですね。
<appSettings>
    <add key="logDir" value="C:\log">
        <!-- ログ保存先ディレクトリ設定 -->
    </add>
</appSettings>
実際に、XML Schema には xsd:annotation という、XML Schema の各定義に対する注釈を記述するための要素があり、子要素に xsd:documentation と xsd:appinfo を持ちます。
xsd:documentation はスキーマ文書の読者、つまり人のための注釈を記述し、xsd:appinfo にはスキーマを処理するアプリケーションのための注釈を記述します。
対象の定義と関連を持つ必要があるため、定義の子要素として記述しなければなりません。
ちなみに、xsd:schema 以外の定義に対しては、最初の子要素である必要があります。
もちろん注釈=コメントではありません。コメントの一部とみなすことはできると思いますが。

しかし、設定ファイルのようなファイルの場合、XSLT・XPath・DOM 等を利用して定義内容を一覧にしたい場合は無いですか?
そんな時、設定にたいするコメントを一緒に記載したくないですか?
コメントを子要素にしておけば、そんな場合に対するコーディングが非常に素直なものになります。(特に XSLT)

決して、常にコメントをこう書くべきだというつもりはありません。
  • 人から見ると、読みにくい(その他の書式にない形式なため、なれてない)
  • ネストが必要以上に深くなる
  • 全体的に冗長になる
のように、デメリットも多々あります。
私も定期的に頭をよぎる割には、そのたび色々考えて、ほとんどの場合前者を採用してしまいます。
設定ファイルのように、他人に見せるファイルならなおさらです。
見てのとおり、デメリットは「人が見たとき」という面に集中しています。
しかし、システムが扱う場合は、このデメリットはほとんど意味がないでしょう。そして前述したメリットが生きてくる場合があります。
つまり、何らかの処理系で扱う XML の場合、処理内容によっては後者の方がいい場合もあるんじゃねーの?ってことですな
投稿日時 : 2007年5月20日 12:23

コメント

# re: XML におけるコメントの記述位置 2007/05/20 19:32 シャノン
ぶっちゃけ、どうでもいいと思った。…カチンと来たらごめんよ。

app.config に限定した話は別として、XML という言語はその性質上、「XML のコメントは云々」とひとくくりに語ることはできず、「○○というXML応用規格においては~」と限定しなければ話ができない。
そのように限定すると、プログラミング言語と同じように、機械的にパースすることをまったく意図しないコメントが出てくるような規格もあるかもしれない。

一方で、コメントさえも機械処理することが重要なら、コメントじゃなくて xsd:annotation みたいに要素にしちゃえばいい。

app.config に話を絞ると…まぁなんというか、コメントを子にしなくても、「直前の兄弟要素をコメントとする」とかいうパースも、大して変わらない難易度で十分可能だよなぁ、とか思う次第。

あとはまぁ、最近の仕事の絡みもあって、「app.config はユーザに公開し、ユーザが好き勝手に書き換えることを想定するか否か」によっても変わってくるかな、とか。

# re: XML におけるコメントの記述位置 2007/05/22 21:33 THREE-ONE
うん、いやおっしゃるとおりだと思いますよ。

>「app.config はユーザに公開し、ユーザが好き勝手に書き換えることを想定するか否か」
app.config を直接触らせたくないですが、書き換えることは想定しなきゃいけないかなぁと思いますねぇ。

# re: XML におけるコメントの記述位置 2008/05/08 0:20 komikoni
はじめまして・・

DOMで上段のようコメントを追加しようとすると結構大変ですよね
コメント追加してから要素追加・・とかなら良いんですが
既にある要素にコメントを追加するのは手間ですよね。

# re: XML におけるコメントの記述位置 2008/05/19 11:35 THREE-ONE
はじめまして。

> 既にある要素にコメントを追加するのは手間ですよね。
そうなんです。
要素の関係を順番だけで判断しなきゃならないってのがどうも XML にしっくりこないんですね。
まあ、すでにある要素に機械的にコメントを追加するってのはレアケースだとは思いますが。

Post Feedback

タイトル
名前
Url:
コメント: