<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
<TITLE>XML宣言</TITLE>
</HEAD>
<BODY BGCOLOR="WHITE">
<H2>XML宣言</H2>
<HR>
SGMLにはSGML宣言というものがありましたけど、XMLにも<STRONG>XML宣言</STRONG>
というものがあります。これはとりあえず書かないと行けないものです。
但し、こちらは、SGML宣言とは全くことなり、
<P ALIGN="CENTER">
<STRONG>
この文書はXMLの文書だ!
</STRONG>
<P>
と、文字通り「宣言」するためのもの(言い過ぎかな、)です。こんな書き方するそうです。
<P ALIGN="CENTER">
<STRONG>
&lt;?xml version="1.0"?&gt;
</STRONG>
<P>
一見して分かるように、SGML宣言のような様々な定義はありませんというか、なくてもいい。
<BR>
でも、厳密には、こう定義されてます。
<P ALIGN="CENTER">
<STRONG>
XML宣言 は '&lt;?xml' VersionInfo EncodingDecl? SDDecl? S? '?&gt;' と書く
</STRONG>
<BR>
S は空白(OX20,0x0a,0x0d,0x09)ね。
<P>
先頭の
<STRONG>&lt;?</STRONG>と最後の<STRONG>?&gt;</STRONG>とは
処理命令(の開始、終了)だということで、終了の方はともかく、まぁ、いわゆるSGMLで
よく使われる方法ですよね。
<BR>
#PIの定義で、&lt;? で始まり、?&gt; で終わる　と定義されちゃってる。理由は、、、?
<P>
それに<STRONG>xml</STRONG>が続いて、「XMLの文書」と
宣言するわけなんですが、<STRONG>VersionInfo</STRONG>が必須になってます。
<BR>
これは、「XMLのバージョンを明記しろ」ということで、現行は<STRONG>1.0</STRONG>
なので、
<P ALIGN="CENTER">
<STRONG>
	VersionInfo := S 'version' Eq ( 'VersionNum' | " VersionNum ")
</STRONG>
<BR>
(Eq ってのは = のこと。厳密には、その前後に0〜1個の空白が入っていい)
<P>
っていう書式にしたがって<STRONG>version="1.0"</STRONG>って書きます。
<BR>
このあたりまでは、いわゆるSGML宣言の先頭に<STRONG>&lt;!SGML・・・・></STRONG>
で、必要に応じて<STRONG>(ENR)</STRONG>(バージョンにあたるでしょ?)を記載するの
と同じようなもんかも知れませんね、、、
<P>
これだけなら何てことないんですけど、
<P ALIGN="CENTER">
<STRONG>
	EncodingDecl?
</STRONG>
<P>
これが曲者。ここで文書のエンコード方法を記載するんです。そういう意味では、
XML宣言は SGML宣言に似ていなくもない。でも、いちいち文字のマッピングなんか書かない。
<BR>
で、<STRONG>?</STRONG>が付いてるから、別に書かなくてもいい。でも、ここで特になにもいわないと「異議無き時は沈黙を持って答えよ」じゃないけど、
<STRONG>ISO 10646</STRONG>というか、同じじゃないけど
<STRONG>Unicode 2.0</STRONG>だかなんだかになっちゃう。
<BR>
#UTF-8だっけなんだっけ、、、全然わからん。
<P>
私の場合、ここに<STRONG>encoding="EUC-JP"</STRONG>って書く。
書式は、
<P ALIGN="CENTER">
<STRONG>
EncodingDecl ::= S 'encodeing' Eq ('"' EncName '"' | "'" EncName "'")
</STRONG>
<P>
個人的に、XMLで一番わかんないのが、このエンコードに関する話。
勉強したら、書いてみます。
<P>
で、そのあとの
<P ALIGN="CENTER">
<STRONG>
	SDDecl?
</STRONG>
<P>
スタンドアロン文書宣言(Standalone Document Declaration)のことだそうで、、、
これも<STRONG>EncodeingDecl</STRONG>同様、別の機会にということで、勘弁。
<P>
というわけで、結論。
<BR>
こんな感じで「決まり文句」として使いましょう。(^ ^;
<P>
<FONT SIZE="+2">
&lt;?xml version="1.0" encoding="EUC-JP" ?&gt;
<BR>
か
<BR>
&lt;?xml version="1.0" encoding="ISO-2022-JP" ?&gt;
<BR>
パソコンでお仕事してる人は、
<BR>
&lt;?xml version="1.0" encoding="Shift_JIS" ?&gt;
<BR>
かな、、、
</FONT>
<P>
そうそう、大文字・小文字の違いに気を付けてくだせぇ。
<HR>
<ADDRESS>
miuraj@isc.meiji.ac.jp
</ADDRESS>
</BODY>
</HTML>
