<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>マーク付き区間</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end></p><blockquote><dl><dt>(254) マーク区間 (marked section)</dt><dd>
特別の目的のために認識される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">区間</anchor>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 4151</anchor>-1992 3.</src></dd></dl></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> マーク区間は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間宣言</anchor>としてではなくても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体宣言</anchor>を使って定義することもできます。
例えば: <samp class="SGML">&lt;!ENTITY ent MS &quot; CDATA [ something included &quot;&gt;</samp> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <samp xmlns="http://www.w3.org/1999/xhtml" class="SGML"> [ </samp> (<code xmlns="http://www.w3.org/1999/xhtml" class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">dso</anchor></code>) だけが区切子として入って対応する括弧がないので不恰好ですが、そういうもんです。</weak></p></section><section><h1>マーク付き区間宣言</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">識別</anchor>し、
その取扱いを指定する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク宣言</anchor>。 
Marked section declaration。 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JISX4151</anchor>‐1992 定義 (257), 9.4 参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <ul><li>マーク区間宣言 = マーク区間開始 状態見出し語指定 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">dso</anchor> マーク区間 マーク区間終了 ;; (93)</li><li>マーク区間開始 = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mdo</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">dso</anchor> ;; (94) <samp class="SGML"> &lt;![ </samp></li><li>マーク区間終了 = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">msc</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mdc</anchor> ;; (95) <samp class="SGML"> ]&gt; </samp></li><li>マーク区間 = *<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML文字</anchor> ;; (96)</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間</anchor>は、そのマーク区間宣言が位置する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈</anchor>での<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文</anchor>上及び<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">意味</anchor>上の要件に従わなければなりません。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(例えば、<anchor>文書実現値</anchor>内で <code xmlns="http://www.w3.org/1999/xhtml" class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">INCLUDE</anchor></code> なマーク区間を使ったからといって、そこに<anchor>実体宣言</anchor>とかを書くのは無茶というもんです。)</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> また、マーク区間宣言の外側で<code class="SGML">マーク宣言終了</code>を使うと、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">誤り</anchor>となります。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(多分これが、 <anchor>XML</anchor> で<anchor>文字データ</anchor>に <code xmlns="http://www.w3.org/1999/xhtml" class="XML"> ] ] &gt; </code> を直接かけない根拠です。)</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JISX4151</anchor> には確かに「マーク区間宣言の外側に現れたマーク<strong>宣言</strong>終了は,誤りとする」とありますが、これは『マーク<strong>区間</strong>終了』の typo でしょうね。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> 開いているマーク区間宣言の個数は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">量</anchor> <code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAGLVL</anchor> 以下でなければなりません。 (9.4.1)</code></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <code class="SGML">マーク区間宣言(93)</code>が使える場所は、<code class="SGML">(27)他の内容</code>と [CODE'(SGML)[(71)<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ds</anchor>]] だけです。前者はつまり <code class="SGML">(25)<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">混合内容</anchor></code>と <code class="SGML">(26)<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素内容</anchor></code>です。従って、マーク区間宣言が書けるのは、(1)<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">子要素</anchor>又は子文字データを持ち得る<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>内, (2) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor>の「地の文」のいずれかとなります。</p></section><section><h1>マーク区間の見出し語</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">見出し語</anchor>がありました。</p><table><tbody><tr><th><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">見出し語</anchor></th><th>説明</th><th><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor></th><th><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実現値</anchor></th><th><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML DTD</anchor></th><th><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外来要素</anchor></th><th><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML要素</anchor></th></tr><tr><th><code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA</anchor></code></th><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字データ</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA区間</anchor>)</td><td>○</td><td>○</td><td>×</td><td>○</td><td>×</td></tr><tr><th><code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IGNORE</anchor></code></th><td>無視する (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">条件区間</anchor>)</td><td>○</td><td>×</td><td>○</td><td>×</td><td>×</td></tr><tr><th><code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">INCLUDE</anchor></code></th><td>含める (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">条件区間</anchor>)</td><td>○</td><td>×</td><td>○</td><td>×</td><td>×</td></tr><tr><th><code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RCDATA</anchor></code></th><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">置換可能文字データ</anchor></td><td>○</td><td>×</td><td>×</td><td>×</td><td>×</td></tr><tr><th><code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TEMP</anchor></code></th><td>一時</td><td>○</td><td>×</td><td>×</td><td>×</td><td>×</td></tr></tbody></table><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体参照</anchor>を展開した時の便宜を考えて、
複数の見出し語を指定することも出来ます。たとえば、
<samp class="SGML">&lt;!<strong>[</strong>CDATA TEMP [ ほげほげ ]<strong>]</strong>&gt;</samp> は正当です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 特に <code class="SGML">IGNORE</code>, <code class="SGML">CDATA</code>, <code class="SGML">RCDATA</code>, <code class="SGML">INCLUDE</code> の4つは<dfn>状態見出し語</dfn>といい、この順 (無視→含める) で優先します。状態見出し語が無い時には <code class="SGML">INCLUDE</code> とみなされます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> XML では、マーク区間を DTD の内部部分集合で使うことは出来ません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> また、 XML では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書要素</anchor>内で使えるマーク区間は <code class="XML">CDATA</code> のみです。</p></section><section><h1>実体境界によるマーク区間の分断</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完結記憶文書実現値</anchor>の定義は「全ての要素及びマーク区間が、それが開始した実体の中で終了する文書実現値」なんですけど、この条件がマーク区間に関して満たされない場合ってあります? 素の SGML でも必ずマーク区間は完結していると思うんですが。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal> それがそうでもないらしい。 JIS X 4151‐1992 8.4.3:<ol><li>(2) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字データ</anchor>若しくは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">置換可能文字データ</anchor>と宣言してある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>若しくはマーク区間の内容又は無視するマーク区間の内容は、
同じ実体の中で始まって終わらなければならない (他の要素の内容又は他のマーク区間の内容も、そうすることが望ましい。)。</li><li>(3) (2) に該当しない要素又はマーク区間に対しては、
その開始タグ及び終了タグ (又はその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間開始</anchor>及び<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間終了</anchor>) が、共に同じ実体の中にあるか、
同じ実体の中から参照している実体の置換文となっているかであることが望ましい。</li></ol></p><p>ところで「マーク区間の内容」とはどこからどこまでのことだろう?
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> で、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;12</anchor-internal> のように解釈するとして、 (2), (3)
をまた読んだら、余計意味が分からなくなりましたが何か?</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>マーク区間の内容</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> JIS X 4151‐1992 8.4.3 (2) で未定義のまま使われている
「マーク区間の内容」とはなんだろう。</p><p>JIS X 4151 での「内容」の定義は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容</anchor>である。
ここではマーク区間のマの字も出てこない。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> ここで、8.4.3 (3) において、要素における開始タグ及び終了タグがそれぞれそマーク区間におけるマーク区間開始及びマーク区間終了に対応させていることに注目したい。
そこで、要素についての「内容」の定義を書き換えてみる。</p><blockquote><p>文書の中で<ins>マーク区間宣言</ins>の<ins>マーク区間開始</ins>と<ins>マーク区間終了</ins>との間に出現する文字。</p></blockquote><p>なるほど、それらしい定義である。この解釈が正しいとすると、<pre>&lt;![<em>CDATA[something</em>]]&gt;</pre><p>の内容は <samp class="SGML">CDATA[something</samp> である。</p></p><p>しかもこれは <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> に例のある、マーク区間実体の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体値</anchor>に指定する内容と一致する。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なお、マーク区間実体は<anchor>置換文</anchor>をマーク区間開始・終了で括ってから解釈する (9.5.4) ので、この定義でマーク区間実体をもカバーできます。</weak></p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付き区間</anchor>って何かかっこ悪い訳じゃないですか? 使い慣れた<em>マーク区間</em>の方がいいなあ。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <em>マニアックな文法論議 - SGML のマーク区間</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.ne.jp/asahi/minazuki/bakera/html/sgml/markedsection">http://www.ne.jp/asahi/minazuki/bakera/html/sgml/markedsection</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <em>鳩丸よもやま話 : マーク区間とは</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://altba.com/bakera/hatomaru.aspx/yomoyama/markedsection">http://altba.com/bakera/hatomaru.aspx/yomoyama/markedsection</anchor-external>: <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> の新版</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> SGML におけるマーク区間の使い方については、 JIS X 4151‐1992 参考3 8. に解説があります。分かりやすいですから是非ご覧あれ。</li></ul></section></body></html>