<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><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> 【<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>を閉じる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">区切子</anchor>。 Marked section end。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JISX4151</anchor>‐1992 3. (256) 参照。<ul><li><code class="ABNF"><dfn>マーク区間終了</dfn> := <code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">msc</anchor></code> <code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mdc</anchor></code> ;; (95)</code></li></ul></p><p><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> 規格参照具象構文や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> など多くの環境では
<code class="SGML"><em>]</em> <em>]</em> <em>&gt;</em></code> が使われます。</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">シフトJIS</anchor> に配慮した具象構文では
<code class="SGML">*&gt;*&gt;&gt;</code> が使われることがあるそうです。
なんとも奇妙な・・・。</p><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> <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MSE</anchor></dfn> は、<q>文脈上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制約</anchor>。<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:">mdc</anchor></code> が続く場合、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈依存区切子</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認知</anchor>する。</q> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 4151</anchor>‐1992 8.6.2(1)(d) 参照)</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> ではなんのことだかさっぱりですが、要は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間終了</anchor>のことを言っているのです。</p><section><h1>MSE (に相当する文字列) を書けない場所</h1><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> マーク区間終了の文字列 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規格参照具象構文</anchor>や XML
では <code><em>]</em> <em>]</em> <em>&gt;</em></code>)
を<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:">COM</anchor></code>, <code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DSM</anchor></code>
の場所で書くと、マーク区間終了とみなされてしまいます。</p><p>たとえば、<pre>&lt;element&gt;]]&gt; と書いてはいけません。&lt;/element&gt;</pre></p><p>と書くと、 <samp>element</samp> 要素の内容はマーク区間終了と
<samp> と書いてはいけません。</samp>
になってしまいます。ところが、</p><blockquote><p>マーク区間宣言の外側に現れたマーク区間終了は, 誤りとする</p></blockquote><p>に従い、このマーク区間終了は<anchor xmlns="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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 以下は古い説明。</p><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> マーク区間終了の文字列は、「マーク区間宣言の外」では出現してはいけないことになっています。「外」とはどこからどこまでかはよくわかりませんが、 SGML 処理系や XML 仕様の解釈から推測すると、要素の内容と文書型宣言 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(後者は元からありえない。)</weak> では駄目みたいです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値表記</anchor>内とか、<anchor xmlns="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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> では <code class="XML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CharData</anchor>(14)</code> <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.w3.org/TR/REC-xml#NT-CharData">http://www.w3.org/TR/REC-xml#NT-CharData</anchor-external> で表される場所 (要素の内容) には <code class="XML"> ] ] &gt; </code> を書くことが出来ません。 (<code class="XML"> ] ] &amp;gt; </code> などとしなければなりません。)</p><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> <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.satoshii.org/markup/notes/2003/11">http://www.satoshii.org/markup/notes/2003/11</anchor-external> より:</p><blockquote><p>msc は認知様相 CON DSM 制約 MSE, mdc は認知様相 CTX MD. ここで、<code>マーク区間終了 = msc, mdc — (95)</code> であるから、MSE は CON DSM でしか認知されない。つまり、リテラルや注釈の内部に ]]&gt; という文字列を記述したところで、]] が msc と認知されることはないから、これは MSE とは見なされない。すなわち、この文脈での文字列 ]]&gt; は、<code>マーク区間宣言の外側に現れたマーク区間終了は, 誤りとする</code>という JIS X 4151 の文言には抵触しないのである。</p><p>以下、]] が msc として認知される範囲で考える。認知様相 DSM で msc を認知するケースでは、MSE は常に正しい MSE として扱われるので、エラーの要因とはならない (DSM というのはマーク区間の内側なのだから当然)。結局、<code>マーク区間宣言の外側に現れたマーク区間終了</code>というのは、「マーク区間宣言の外側の内容として現れた文字列 ]]&gt;」に他ならないわけである。</p></blockquote><p><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> その通りでした。認知様相を考えるのを忘れてました。</p></section><section><h1>メモ</h1><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> <code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">msc</anchor></code> として認知され得る文字列が見つかった時に、制約 <code class="SGML">MSE</code> となります。ここで文字列 <code class="SGML">mdc</code> が続いていることがわかれば、文脈依存区切子が認知されます。すなわち、 <code class="SGML">msc</code> + <code class="SGML">mdc</code> がマーク区間終了とみなされ、継続中だった<anchor xmlns="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> <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>を仮定して言い直すと、マーク区間を解釈中に <code class="SGML"> ] ] </code> を発見すると、その直後に <code class="SGML">&gt;</code> がないか探します。あった場合は <code class="SGML"> ] ] &gt; </code> を認知し、もってマーク区間を終了させます。</p></section></body></html>