<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
<TITLE>SGML宣言からみるXMLの特徴</TITLE>
</HEAD>
<BODY BGCOLOR="#FCFCFC">
<!--BODY BACKGROUND="/~miuraj/images/sgml1.gif"-->
<H2>SGML宣言からみるXMLの特徴</H2>
<HR>
三浦流XML用SGML宣言読解を。SGML宣言を読んで分かるXMLの特徴を書いてみます。
<HR>
まず、先頭、<STRONG>&lt;!SGML</STRONG>の後の、
<P>
<CENTER>
<STRONG>
<DD><STRONG>"ISO 8879:1986(ENR)"</STRONG>
</STRONG>
</CENTER>
<P>
は、<A HREF="/~miuraj/sgml/sgml_dialy/memo202.html">ENR(Extended Naming Rules)</A>
に従う事の宣言ですから、文書要素の名称などに多バイト文字も使えること
になります。とはいっても、エスケープシーケンスは使えないでしょうから、
日本語の場合、euc-jpやNCALS研究会のいうG1漢字方式(JIS X 0208 のコードを
G1へ呼び出す方法(つまり、ほとんどEUC?))、あるいはshift-jisじゃないとだ
めなんでしょうね、おそらく。
<BR>
まぁ、SGML宣言は実際にはないので、勝手な推測ですし、
エスケープシーケンスがあったっていいんでしょうが、XML-WD(PR)に
<CENTER>
<STRONG>
XML shall be compatible with SGML.
</STRONG>
</CENTER>
と書いてありますもんねぇ。とはいっても、ISO-2022-JPもOKなんですよねぇ、、、
<BR>
# この辺、よく、わかんないなぁ、、、
<BR>
<UL>
<LI>1999.11.30・おそらく、(ENR)が、今なら(WWW)になると思う。
</UL>
<P>
続いて、
<STRONG>
<DL>
<DD>CHARSET
	<DL>
	<DD>BASESET
		<DL>
		<DD>"ISO Registration Number 176//CHARSET
		<DD>ISO/IEC 10646-1:1993 UCS-2 with implementation
		<DD>level 3//ESC 2/5 2/15/4/5"
		</DL>
	</DL>
</DL>
</STRONG>
は、<STRONG>UNICODE</STRONG>を使う旨の宣言ですね。当然、必要に応じて
変更されるわけですね。
<BR>
# 存在しないものの「変更」というのも何ですが。
<P>
で、今度は、
<STRONG>
<DL>
<DD>CAPACITY SGMLREF
	<DL>
	<DD>TOTALCAP	99999999
	<DD>ENTCAP		99999999
	<DD>・		・
	<DD>・		・
	<DD>LKNMCAP		99999999
	</DL>
</DL>
</STRONG>
前にも書きましたが、規格参照容量集合はすべて、<STRONG>99999999</STRONG>
に宣言されてますから、ほとんどどんなサイズの文書もOKといったところで
しょうか。
<BR>
# 「容量」ってじつはよく分からないんです(^ ^;
<P>
次に、<STRONG>SYNTAX</STRONG>の
<STRONG>
<DL>
<DD>ITAB　　SEPCHAR　　12288　　--ideographic space--
</DL>
</STRONG>
ITABって何でしょうねぇ、私、しりませんけど、まぁ、空白みたいな物でしょう。
<P>
次の
<STRONG>
<DL>
<DD>NAMING
	<DL>
	<DD>LCNMSTRT
		<DL>
		<DD>224-226 248-255 ・・・・・
		<DD>・・・・・・・・・・・・
		</DL>
	<DD>UCNMSTRT
		<DL>
		<DD>192-214 216-222 ・・・・・
		<DD>・・・・・・・・・・・・
		</DL>
	<DD>NAMESTRT
		<DL>
		<DD>58 95 170 ・・・・・・・・
		<DD>・・・・・・・・・・・・
		</DL>
	<DD>LCNMCHAR "-."
	<DD>UCNMCHAR "-."
	<DD>NAMECHAR
		<DL>
		<DD>183 720 721・・・・・・・・
		<DD>・・・・・・・・・・・・
		</DL>
	</DL>
</DL>
</STRONG>
<STRONG>ENR</STRONG>に従うので、こんな感じで文字コードを10進数で指定すれば
いいわけです。
<P>
つぎがメインでしょう。(SGML の TC2,3 ではチト違う(1999.11.30))
<STRONG>
<DL>
<DD>DELIM
	<DL>
	<DD>GENERAL SGMLREF
	<DD>NET	"/&gt;"
	<DD>PIC	"?&gt;"
	<DD>SHORTREF	NONE
	</DL>
</DL>
</STRONG>
まず、<STRONG>NET</STRONG>方から。<STRONG>NET</STRONG>の宣言は、
<P>
<CENTER>
<STRONG>
簡略終了タグを/&gt;とする
</STRONG>
</CENTER>
<P>
ということです。
<BR>
XML-WDでは、空要素(Empty Element)のタグを、
<P>
<CENTER>
<STRONG>
EmptyElement ::='&lt;' Name (S Atttibute)* S? '/&gt;'
</STRONG>
</CENTER>
<P>
と定義しています。Empty Elementが何で必要かというと、HTMLでは、
<P>
<CENTER>
&lt;IMG SRC="http://www.meiji.ac.jp/icons/home.gif"&gt;
</CENTER>
<P>
見たいなものがありますよね。多分、このせいでしょう。で、これには終了タグは無い。
<BR>
でもXMLでは、後で出てきますけど
<P>
<CENTER>
<STRONG>
OMITTAG　　NO
</STRONG>
</CENTER>
<P>
なので、通常、終了タグは省略できないわけです。で、<STRONG>NET</STRONG>を
定義しておくことで、XMLは、
<P>
<CENTER>
<STRONG>
&lt;IMG SRC="http://www.meiji.ac.jp/icons/home.gif"/&gt;
</STRONG>
</CENTER>
<P>
な風に記述することができるわけで。文法的には、
<STRONG>/&gt;</STRONG>が終了タグの役割を果たすといえます(よね? 自信ないなぁ)
<BR>
HTMLに<STRONG>&lt;BR&gt;</STRONG>ってありますけど、これなんかはXMLの場合だと、
<P>
<CENTER>
<STRONG>
&lt;BR/&gt;
</STRONG>
</CENTER>
<P>
としておけば、いいわけですよね。
<BR>
つぎに来ているのは、<STRONG>PIC</STRONG>、処理命令の終了の定義です。
<BR>
XMLでは、文書の先頭に<STRONG>XML宣言</STRONG>なるものが必要なようです。
それは、
<P>
<CENTER>
<STRONG>
&lt;?XML version="1.0" ?&gt;
</STRONG>
</CENTER>
<P>
のように記述するようです。
<BR>
# ちなみに、このXML宣言に<STRONG>encoding="euc-jp"</STRONG>みたいに、文字の
エンコード方法を指定できるそうです。
<BR>
で、<STRONG>&lt;?</STRONG>から、<STRONG>?&gt;</STRONG>までがXMLを処理する
アプリケーションに対する指示になるわけですが、何で
<P>
<CENTER>
<STRONG>
PIC　　"?&gt;"
</STRONG>
</CENTER>
<P>
なのかは、分かりません。<STRONG>&gt;</STRONG>だと何がまずいのかな、、、
<BR>
<STRONG>SHORTREF</STRONG>が<STRONG>NONE</STRONG>なのは、分かりやすくて好きです。
<P>
お次は、<STRONG>QUANTITY</STRONG>いきましょう。
<BR>
ほとんど<STRONG>99999999</STRONG>で、<STRONG>NORMSEP</STRONG>(よくわからん)
のみ、規格参照量集合としての定義のまま。
<BR>
違いは、
<P>
<CENTER>
<STRONG>
		BSEQLEN が not used
<BR>
		DTAGLEN,DTEMPLEN が not used
</STRONG>
</CENTER>
<P>
です(そのように、コメントに書いてる)。何でか? 私なりの解釈ですと、
<OL>
<LI><STRONG>BSEQLEN</STRONG>の定義が無い(not used)なのは、XMLでは<STRONG>SHORTREF　NONE</STRONG>(短縮参照は使わない)だから。
<LI><STRONG>DTAGLEN,DTEMPLEN</STRONG>の定義が無い(not used)なのは、XMLでは、<STRONG>DATATAG　NO</STRONG>(後で出てくる)なので。
</OL>
ということかと。
<P>
最後に機構の部分。<STRONG>LINK,OTHER</STRONG>は全部<STRONG>NO</STRONG>、<STRONG>APPINFO</STRONG>も<STRONG>NONE</STRONG>で、若干特徴があるのは、<STRONG>MINIMIZE</STRONG>の所で、
<P>
<CENTER>
<STRONG>
DATATAG　　　NO
<BR>
OMITTAG　　　NO
<BR>
RANK　　　　　NO
<BR>
SHORTTAG　　　YES
</STRONG>
</CENTER>
<P>
ここで、<STRONG>RANK　　NO</STRONG>はいいでしょう。だいたい、私はよくわかんない。
<BR>
<STRONG>DATATAG　NO</STRONG>も、いろんな本を見ると、それなりに便利そうですが、
べつに使わないでしょうから問題無いでしょう。
<BR>
<STRONG>OMITTAG　NO</STRONG>なのは、面倒ですね。
<BR>
<STRONG>SHORTTAG　YES</STRONG>なのは、<STRONG>NET</STRONG>を定義するためかな。
<HR>
SGML宣言を読んで分かるのは、まぁ、こんなもんかと。
<BR>
以上で、三浦流XML用SGML宣言読解を終わります。
<BR>
# 御粗末　(_ _)
<HR>
<A HREF="index.html">XML入門</A>へ戻る
<HR>
<ADDRESS>
miuraj@isc.meiji.ac.jp
</ADDRESS>
</BODY>
</HTML>
