附属書K (規定)

Web SGML適応


この附属書は, SGMLのWorld Wide Web(WWW), イントラネット及びエクストラネットへの多様な適応によって明らかになった欠陥を修正する。 この附属書は, 誤りを修正し, 既存の適合文書を不適合にしない明確な解法が存在するあいまいさを解決し, その他のあいまいさについては別の解法の選択を与える。 この附属書の応用可能性は, World Wide Webへの応用がきっかけとなったが, SGMLのあらゆる用途に拡張できる。

この附属書は, HyTime第2版[JIS X 4155:2000(ISO/IEC 10744:1997)]のSGML拡張機能とDSSSL[JIS X 4153:1998(ISO/IEC 10179:1996)]との中で定義されているグローブ及び特性集合を参照する。

K.1 適合性

この附属書に適合するかどうかは個別の文書ごとに決定され, K.3.2で示すとおり, SGML宣言中で表示される。適合SGMLシステムとなるためには, 必ずしもこの附属書をサポートする必要はない。

この附属書は, 置換, 新しい構文生成規則及びテキストの集合として構成され, この規格の本体を変更するものとして記述されている。影響を受ける節の番号は必ずしも引用されない。 しかし, それらの変更は, この附属書に適合する場合にだけ適用できる。

この附属書をサポートするSGML構文解析系は, この附属書への適合を主張しない適合SGML文書を構文解析できなければならない。それらの文書の構文解析は, この附属書をサポートしないSGML構文解析系を用いた場合と同一のグローブを生成しなければならない。しかし, それらの文書に関するエラー報告は, 規格をこの附属書によって変更した結果に従って行う。変更前の規格に関するエラーを報告する必要はない。

K.2 定義

K.2.1 文書型宣言に関係する定義

K.2.1.1 DTD宣言(DTD declarations)

文書型宣言部分集合の中に現れるマーク付け宣言。

K.2.1.2 外部部分集合(external subset)

文書型宣言部分集合のうち, 外部宣言実体中に存在する部分。

K.2.1.3 内部部分集合(internal subset)

文書型宣言部分集合のうち, 文書型宣言のdsoとdscとの間に現れる部分。

dso及びdscが省略された場合, 内部部分集合は,存在しないのではなく,空となる。

K.2.1.4 外部部分集合実体(external subset entity)

文書型宣言の外部識別子パラメタによって宣言され, 内部部分集合の末尾で(暗黙的に)参照される実体。

K.2.2 文書インスタンスに関係する定義

K.2.2.1 完全宣言済み文書インスタンス(fully-declared document instance)

文書インスタンスであって, それに関連付けられた文書型宣言が, この規格の本体によってインスタンスに必要とされるすべてのDTD特性を表現するのに十分なマーク付け宣言を含み, それらの特性を修正するDTDデータ実体を含まないもの。

この文書型宣言自体は, K.4.9に示す暗黙の宣言であってもよい。

  備考 SGML宣言がIMPLYDEF ATTLIST NO及びELEMENT NO ENTITY NO NOTATION NOを指定している場合, 文書インスタンスは完全宣言済みである必要がある。システムは, SGML宣言が要求しない場合でも, 処理を起動する際のパラメタなどによって, インスタンスが完全宣言済みであるかどうかの妥当性検証を要求する手段を提供することが望ましい。

完全宣言済みでない文書インスタンスは, 完全タグ付き文書インスタンス又は充足タグ付き文書インスタンスのどちらかでなければならない。

K.2.2.2 完全タグ付き文書インスタンス(fully-tagged document instance)

すべての要素に対して終了タグ及び共通識別子付き開始タグが存在し, 開始タグ中のすべての属性指定に属性名が存在する文書インスタンス。

  備考 SGML宣言が, DATATAG NO, RANK NO, OMITTAG NO, SHORTTAG STARTTAG EMPTY NO及びSHORTTAG ATTRIB OMITNAME NOを指定している場合, 文書インスタンスは完全タグ付きでなければならない。SGML宣言が要求しない場合でも, システムは, 処理を起動する際のパラメタなどによって, インスタンスが完全タグ付きであるかどうかの妥当性検証を要求する手段を提供することが望ましい。

K.2.2.3 型妥当文書インスタンス(type-valid document instance)

この規格の本体が要求するとおりであって,関連付けられた文書型宣言中で表現されたDTD特性に適合する文書インスタンス。DTD特性の表現は,マーク付け宣言, DTDデータ実体, 又はその両方による。

K.2.2.4 充足タグ付き文書インスタンス(amply-tagged document instance)

文書型宣言へのアクセスを必要としない範囲内でマーク付け最小化を用いている文書インスタンス。

  備考1 SGML宣言が, DATATAG NO, RANK NO, SHORTTAG ATTRIB OMITNAME NO,及びIMPLYDEF ELEMENT NO又はIMPLYDEF ELEMENT ANYOTHERのどちらかを指定している場合, 文書インスタンスが最小化を用いている限り, それらは充足タグ付きでなければならない。SGML宣言が要求しない場合でも, システムは, 処理を起動する際のパラメタなどによって, インスタンスが充足タグ付きであるかどうかの妥当性検証を要求する手段を提供することが望ましい。

  備考2

充足タグ付き文書インスタンス中では, K.3.7で規定するとおりにデフォルトで宣言された要素型についても, 終了タグを省略できる。

もっと正確に言うと, 充足タグ付き文書インスタンスは, 7.3.1.2(JIS X 4151においては, 6.3.1.2)で規定する三つの条件 a), b)又はc)のどれかを満たすことによって, 暗黙に宣言された型の要素の終了タグを省略できる。しかし,条件c)は,"IMPLYDEF ELEMENT ANYOTHER"がSGML宣言で指定されていて,その要素に同じ型の他の要素が続く場合だけ満たすことができる。

次に示す充足タグ付き文書インスタンスは, "IMPLYDEF ELEMENT ANYOTHER"が指定され, DTD宣言が一つもない場合におけるこの可能性を例示している。

<chapter>
<title>Chapter title</title>
<list>
<item>First item in the list
<item>Second item in the list
</list>

先頭のitemの終了タグは, 条件c) “この要素の後ろに, その内容中には出現を許されない他の要素(この場合, 他のitem)が続いている” が成立するので, 省略できる。

2番目のitemの終了タグは, 条件b) “この要素の後ろに, 他の開要素(list)の終了タグが続いている” が成立するので, 省略できる。

chapterの終了タグは, 条件a) “この要素の後ろで, SGML文書実体が終了する” が成立するので, 省略できる。

K.2.2.5 直接再帰要素(immediately recursive element)

同じ型の下位要素をその直接の内容として含む要素。

  備考1 次に示す完全タグ付きテキスト中において, 最初のsection要素は直接再帰だが, 最初のlist要素はそうではない。
<section>
<title>The title</title>
<section>
<p>The data.</p>
</section>
</section>

<list>
<item>First outer list item</item>
<item>Second outer list item, which contains an inner list.
<list>
<item>Inner list item</item>
</list>
</item>
</list>
  備考2 システムは, DTDがそれを許している場合でも, 処理を起動する際のパラメタなどによって, インスタンスが直接再帰要素を含んでいるかどうかの妥当性検証を要求する手段を提供することが望ましい。

K.2.3 実体制約に関係する定義

  備考 制約のないSGML文書をサポートするSGMLシステムは, DTD宣言を構文解析し, 内部実体参照及び外部実体参照をともに解決できなければならない。このSGMLシステムが, 被参照実体へのアクセスに失敗した後, エラー回復の一つの形態として構文解析を継続した場合, その結果は予測不可能となる。この規格で定義する実体に関する一つ以上の制約を守ると, もっと単純なSGMLシステムによって処理したり, 外部実体へのアクセスが低速又は低信頼となる環境(ネットワークなど)で処理するために, 文書を修正し易くできる。

K.2.3.1 完結記憶文書インスタンス(integrally-stored document instance)

すべての要素及びマーク付き区間が, それが開始した実体の中で終了する文書インスタンス。

  備考 この制約は, 完全タグ付き文書インスタンス中において, 被参照実体へのアクセスに失敗した後, エラー回復の一つの形態として構文解析を継続することを可能にする。結果として得られるグローブは, アクセスできない実体中にあるノードの後に続くノード群の木構造アドレスを除き, 構文解析されたテキストについては, 被参照実体へのアクセスに失敗しなかった場合と同一となる。この制約は, 実体参照の置換を遅延でき, 実体が再利用される場合にグローブ部分を共有できるという, 編集系の実装上における利点もある。

K.2.3.2 参照なし文書(reference-free document)

定義済みデータ文字実体への参照を除いて, 実体参照を含まないSGML文書。

  備考 参照なし文書は, 実体参照を解決できない適合SGMLシステムを用いて構文解析することができる。

K.2.3.3 外部参照なし文書(external-reference-free document)

外部実体参照を含まないSGML文書。

  備考1 外部参照なし文書は, 外部実体の名前を含む属性値をもつことができ, 応用が実体参照以外の手段によって外部実体にアクセスする結果を引き起こすかもしれない属性値をもつこともできる。

  備考2 外部参照なし文書は, 外部実体参照を解決できないシステムによって構文解析することができる。

K.2.4 その他の定義

K.2.4.1 定義済みデータ文字実体(predefined data character entity)

重要なSGML文字をデータとして参照するために使用される,構文参照文字集合中の文字番号と関連付けられた一般実体。

  備考 DTD宣言を考慮せずに構文解析を行う際に, 区切り子としての解釈を回避可能にするため, データが出現可能なモード中で認識される個々の区切り子文字列の先頭文字に対して,定義済みデータ文字実体が存在することが望ましい。

K.2.4.2 空白(white space)

SEPCHAR, SPACE, RE及びRSの各機能に割り当てられた文字。

K.2.4.3 強制空要素(mandatorily empty element)

EMPTYと宣言された型の要素, 又は明示的な内容参照属性によって, 強制的にEMPTYとなった要素。

K.2.5 DTD記法に関係する定義

K.2.5.1 DTD記法(DTD notation)

DTD特性を表現することができるデータ記法。

  備考1 この規格は, DTD特性を表現する手段としてマーク付け宣言を提供する。この規格は, DTD記法の使用を許すが, 何の定義も行わない。

  備考2 DTD記法には, 他の情報を表現する能力もある。例えば, DTD記法は,文書のデータ内容に関する制約, 又はマーク付け宣言では表現できないが応用による妥当性検証が可能な構造上の制約を表現できる。しかし, 文書がそれら付加的な制約への適合に失敗した場合, 報告可能なマーク付けエラーとはならない。

  備考3 DTD記法は, DTDデータ実体の中で用いられる。

K.2.5.2 DTD特性(DTD properties)

マーク付け宣言によって指定できるクラス及び特性。次に示すグローブ設計によって定義される。

<!DOCTYPE grovplan PUBLIC "ISO/IEC 10744:1997//DTD Grove
Plan//EN">
<grovplan propset=SGMLProp id=dtdprops>
<title>DTD Properties Grove Plan</title>
<desc>
Classes and properties that are specifiable by DTD declarations. They
are needed to parse and validate a document instance.
</desc>
<inclmod>
prlgabs0 prlgabs1 dtgabs rankabs srabs subdcabs
fpiabs arcabs fsiabs dafeabs gadcabs pelement
</inclmod>
<inclclas>
sgmldoc doctpdcl
</inclclas>
<omitprop classes="sgmldoc">
appinfo epilog
</omitprop>
</grovplan>

K.2.5.3 パラメタ実体(parameter entity)

[4.225(JIS X 4151においては, 3.(209))を参照。]

外部部分集合実体であるか, 又はパラメタ実体名を付けて宣言された実体。

K.2.5.4 DTDデータ実体(DTD data entity)

宣言中に記法名を含む外部パラメタ実体。

  備考 この記法名は,DTD記法の名前であることが望ましい。実体の内容は,DTD特性を記述していることが望ましい。

K.3 SGML宣言

[171] SGML declaration =
          "<!SGML", ps+,
          (SGML declaration reference | SGML declaration body),
          ps*, ">"

SGML文書を自己識別的にするために, すべての適合SGML文書は,SGML宣言の形式の一つを含むことが望ましい。

K.3.1 SGML宣言参照

[171.1] SGML declaration reference =
            name, external identifier?
ここで, 
  a) "name"は,参照具象構文における名前とする。
  b) "external identifier"は, SGML宣言本体を参照していなければならない。
     省略された場合, external identifierは "SYSTEM"とする。

外部識別子(external identifier)が公式公開識別子の場合,SGML宣言本体を識別するための公開テキストクラスとして,10.2.2.1(JIS X 4151においては, 9.2.2.1)で示されるものの一つではなくて"SD"を使用することが望ましい。

  備考 例えば, 次のとおりとする。
<!SGML HTML3.2 PUBLIC "+//IDN W3C.ORG//SD HTML Version 3.2//EN">
10.2.2.1(JIS X 4151においては, 9.2.2.1)の文“名前は…でなければならない”を“名前は…であることが望ましい”に置換する。

K.3.2 SGML宣言本体

[171.2] SGML declaration body =
            minimum literal, ps+,
            document character set, ps+,
            capacity set, ps+,
            concrete syntax scope, ps+,
            concrete syntax, ps+,
            feature use, ps+,
            application-specific information,
            (ps+, added requirements)?

最小リテラルの最小データは, 次のどれかとする。

  a"ISO 8879:1986"
  b"ISO 8879:1986 (ENR)"
  c"ISO 8879:1986 (WWW)"

ENR接尾部は, その文書が, この規格の附属書Jに適合することを示す。

WWW接尾部は, その文書が, この規格の附属書K(この附属書)に適合することを示す。附属書Kは, 参照によってこの規格の附属書Jの規定を統合し, この規格の規定のうち, 附属書Kの規定と矛盾するものすべてに取って代わる。

文書が,最小データに対する単純な変更によってこの附属書への適合性を宣言することを可能にするために, SGML宣言本体の幾つかのパラメタは省略可能になっている。省略されたパラメタは, 文書には何の効果ももたない。すなわち, 省略されたパラメタが扱う対象に関しては, その文書はこの附属書に適合していないのと同じとする。

  備考 しかし, パラメタはすべて指定することが望ましい。

K.3.3 容量集合

[180] capacity set =
          "CAPACITY", ps+,
          (("PUBLIC", ps+, public identifier)|
          "NONE"|
          ("SGMLREF", (ps+, name, ps+, number)*))

NONEは, どの容量も指定されていないことを示す。

NONEを指定しても, あるシステムに対して, そのシステム宣言中で指定している値を超える容量のサポートを要求することにはならない。

K.3.4 具象構文

[182] concrete syntax =
          "SYNTAX", ps+,
          (public concrete syntax |
          (shunned character number identification, ps+,
           syntax-reference character set, ps+,
           function character identification, ps+,
           naming rules, ps+,
           delimiter set, ps+,
           reserved name use, ps+,
           quantity set,
           (ps+, predefined data character entities)?))

K.3.4.1 量集合

[194] quantity set =
          "QUANTITY", ps+,
          ("NONE"|
          ("SGMLREF", (ps+, name, ps+, number)*))

NONEは, いかなる量も指定されていないことを示す。

NONEを指定しても, あるシステムに対して, そのシステム宣言中で指定している値を超える量のサポートを要求することにはならない。

K.3.4.2 定義済みデータ文字実体

[194.1] predefined data character entities =
            "ENTITIES", ps+,
            ("NONE"|(parameter literal, ps+, character number)+)

解釈された各"parameter literal"は, 定義されている構文中における妥当な一般実体名でなければならず, 構文参照文字集合中における文字番号と関連付けられている。 その名前付き実体が参照される場合, その置換テキストは, 対応する文字への数値文字参照となる。 定義済みデータ文字実体は, その具象構文を用いるすべての文書の内部部分集合の先頭で定義されているものとして扱われる。

  備考 次に, 例を示す。
ENTITIES "amp" 38 "lt" 60 "gt" 62 "quot" 34 "apos" 39

K.3.5 マーク付け最小化機能

[196] markup minimization features =
          "MINIMIZE", ps+,
          "DATATAG", ps+, ("NO"|"YES"), ps+,
          "OMITTAG", ps+, ("NO"|"YES"), ps+,
          "RANK", ps+, ("NO"|"YES"), ps+,
          "SHORTTAG", ps+, ("NO"|"YES"|
          (start-tag options, ps+, end-tag options, ps+, attribute-options)),
          (ps+, empty element ending rules,
           ps+, implied default declarations)?

  備考 使用可能にされたマーク付け最小化機能の利用は, 他のマーク付け最小化機能を含んだ, この規格の他の規定の操作によって影響を受けてもよい。

K.3.5.1 SHORTTAG開始タグオプション

[196.1] start-tag options =
            "STARTTAG", ps+,
            "EMPTY", ps+, ("NO"|"YES"), ps+,
            "UNCLOSED", ps+, ("NO"|"YES"), ps+,
            "NETENABL", ps+, ("NO"|"ALL"|"IMMEDNET")
ここで, 
  a) EMPTY YESは, 空の開始タグを可能にする。
  b) UNCLOSED YESは, 閉じない開始タグを可能にする。
  c) NETENABL ALLは, 終了タグをもつことを許されたすべての要素について, NET可能開始タグを可能にする。
     NET可能開始タグで始まる要素はnull終了タグで終了してもよいが, そうしなくてもよい。
  d) NETENABL IMMEDNET ("immediate NET")は, 終了タグをもつことを許された要素であって, 開始タグと終了タグとの間に
     テキストをもたない要素に対して,NET可能開始タグを可能にする。
     ただし, これはその要素がnull終了タグで終了することを条件とする。

  備考1 開始タグと終了タグとの間にテキストをもたない要素は,必ずしも強制空要素ではない。

  備考2 null終了タグは, EMPTYNRM YESが指定されている場合にだけ,強制空要素に対して用いることができる(K.3.6)。

  備考3 例えば, nestcが"/",netが">"であって, "img"は強制空要素ではないか, 又は強制空要素であって, EMPTYNRM YESが指定されているとする。このとき,
<img></img>
の代わりに,
<img/>
を用いることができる。

K.3.5.2 SHORTTAG終了タグオプション

[196.2] end-tag options =
            "ENDTAG", ps+,
            "EMPTY", ps+, ("NO"|"YES"), ps+,
            "UNCLOSED", ps+, ("NO"|"YES")
ここで, 
  a) EMPTY YESは, 空の終了タグを可能にする。
  b) UNCLOSED YESは, 閉じない終了タグを可能にする。

K.3.5.3 SHORTTAG属性オプション

[196.3] attribute options =
            "ATTRIB", ps+,
            "DEFAULT", ps+, ("NO"|"YES"), ps+,
            "OMITNAME", ps+, ("NO"|"YES"), ps+,
            "VALUE", ps+, ("NO"|"YES")
ここで, 
  a) DEFAULT YESは, 属性値のデフォルト値指定を可能にする[7.9.1.1(JIS X 4151においては, 6.9.1.1)]。
  b) OMITNAME YESは, 一意なNMTOKEN値に対して, 属性名及びviの省略を可能にする[7.9.1.2(JIS X 4151においては,
     6.9.1.2)]。
  c) VALUE YESは, ある属性値を, リテラルとしてではなく区切り子なしで指定することを可能にする[7.9.3.1
     (JIS X 4151においては, 6.9.3.1)]。

  備考 DEFAULT NOは, 属性定義リスト宣言でデフォルト値を用いることの妨げにはならない。

K.3.6 空要素終了規則

[196.4] empty element ending rules =
            "EMPTYNRM", ps+, ("NO"|"YES")
ここで, EMPTYNRM YESは, EMPTYと宣言された型の要素, 又は明示的な内容参照属性[7.3(JIS X 4151においては, 6.3)]によって強制的にEMPTYとされた要素
に対して, マーク付け最小化規則を含む, 終了タグの存在に関する通常の規則を適用することを示す。

  備考 EMPTYNRM YESの指定は, 終了タグの存在に関して, 強制空要素にもその他の要素と同じ規則を適用する。

K.3.7 暗黙のデフォルト宣言

[196.5] implied default declarations =
            "IMPLYDEF", ps+,
            "ATTLIST", ps+, ("NO"|"YES"), ps+,
            "DOCTYPE", ps+, ("NO"|"YES"), ps+,
            "ELEMENT", ps+, ("NO"|"YES"|"ANYOTHER"), ps+,
            "ENTITY", ps+, ("NO"|"YES"), ps+,
            "NOTATION", ps+, ("NO"|"YES")
ここで, 
  a) DOCTYPE YESは, 暗黙の文書型宣言が, 外部部分集合実体(K.4.9参照)の暗黙の宣言を含むことを意味する。
  b) 他のパラメタに対するYES指定は, 指定された型の情報を, 明示的な宣言なしに完全タグ付き又は充足タグ付き文書
     インスタンス中で使用することを許す。
     その代わり, 宣言は次のとおりに暗黙化される。
     1) ATTLIST YESは, 宣言されない属性が, "CDATA #IMPLIED"と宣言されることを意味する。
     2) ELEMENT YESは, 宣言されない要素型が, "- O ANY"と宣言されることを意味する。
     3) ELEMENT ANYOTHERは, 宣言されない要素型が, "- O ANY"と宣言されることを意味する。
        ただし, この型の直接再帰要素は禁止される。
     4) ENTITY YESは, 宣言されない一般実体が, "SYSTEM"と宣言されることを意味する。
     5) NOTATION YESは, 宣言されない記法が, "SYSTEM"と宣言されることを意味する。

  備考 IMPLYDEF DOCTYPE YESは, 外部部分集合実体の宣言だけを暗黙的に示す。他の宣言は, それが必要であって,適用可能なIMPLYDEFパラメタによって許可されている場合は, 暗黙的に示してもよい。

IMPLYDEF ELEMENT ANYOTHER及びOMITTAG YESが指定されている場合, 宣言されていない型の要素の終了タグは, その要素の後に同じ型の要素の開始が続く場合に, 充足タグ付きインスタンスから省略できる。

IMPLYDEF ENTITY YESが指定されている場合, 一般実体名として#DEFAULTを指定することはできない。

暗黙的に宣言された定義は, それらの宣言を暗黙的に示す必要がある順序に従ってグローブ中に現れる。属性が指定されない場合, 属性割当てノードが作られることはない。

  備考 暗黙の宣言は, 同じオブジェクトに対する, 構文解析の過程で無視された明示的宣言と同じである必要はない(K.4.9の2番目の備考)。何らかの処理(例えば, DTDをもたない文書のために明示的なDTDを生成する処理)の結果としてそのオブジェクトに関して作られるかもしれない, どのような明示的宣言を制約するものでもない。

K.3.8 その他の機能

[198] other features =
          "OTHER", ps+,
          "CONCUR", ps+, ("NO"|("YES", ps+, number)), ps+,
          "SUBDOC", ps+, ("NO"|("YES", ps+, number)), ps+,
          "FORMAL", ps+, ("NO"|"YES"),
          (urn feature, keeprsre feature, validity feature, entities feature)?

K.3.8.1 普遍資源名

[198.1] urn feature =
            ps+, "URN", ps+, ("NO"|"YES")
ここで, URN YESは, 公開識別子が, Internet Engineering Task Force RFC2141 が管理する普遍資源名(Universal Resource 
Names)に従って解釈されることを意味する。

URN及びFORMALの両方がYESである場合, 公開識別子は,公式公開識別子又はURNとして解釈される。

K.3.8.2 内容中の空白

[198.2] keeprsre feature =
            ps+, "KEEPRSRE", ps+, ("YES"|"NO")
ここで, KEEPRSRE YESは, 7.6.1(JIS X 4151においては, 6.6.1)が適用されないことを意味する。

KEEPRSRE YESが指定された場合, 混合内容中のすべての空白は, データ文字ノードとしてグローブ中に含まれ, 要素内容中のすべての空白は,s分離子ノードとしてグローブ中に含まれる。

  備考 このオプションは, 属性値リテラルのように, 空白を正規化するために独自の規則をもつ(そして, いずれにせよ内容中には現れない), 区切られた文字列には影響を与えない。

K.3.8.3 表明

[198.3] validity feature = ps+,
            "VALIDITY", ps+, ("NOASSERT"|"TYPE")
ここで, 
  a) NOASSERTは, 妥当性に関する表明を行わないことを示す。
  b) TYPEが指定された場合, 文書インスタンスは型妥当であることを示す。
     パラメタが省略された場合, TYPEが指定されたものと見なす。
[198.4] entities feature = ps+,
            "ENTITIES", ps+, ("NOASSERT"|
              ("REF", ps+, ("NONE"|"INTERNAL"|"ANY"), ps+,
                 "INTEGRAL", ps+, ("NO"|"YES")))
ここで, 
  a) NOASSERTは, 妥当性に関する表明を行わないことを示す。
  b) REFは, その文書が制約されない実体参照(ANY)をもつこと, 外部参照なし(INTERNAL)であること, 又は参照なし(NONE)
     であることを意味する。
  c) INTEGRAL YESは, 文書インスタンスが完結記憶であることを意味する。
     省略された場合, NOASSERTが指定されたものと見なす。

文書が, 表明された制約に従っていない場合, それは報告可能エラーとする。

  備考1 例えば, それ以外の点では適合する文書が, 誤って完結記憶であると表明している場合, その文書は不適合となる。 この表明が行われていなかった場合には, この文書は適合していたことになる。

  備考2 システムは, SGML宣言が表明を行っていない場合でも, 処理を起動する際のパラメタなどによって, 文書に対して特定のVALIDITY表明又はENTITIES表明が正しく行えるかどうかを検査する手段を提供することが望ましい。

  備考3 SGML適合性に対する従来の要求を満たすには, 文書インスタンスは,型妥当であると共に完全宣言済みでなければならない。

K.3.9 追加要件

[199.1] added requirements =
            "SEEALSO", ps+, ("NONE"| (ps+, public identifier)+)

この公開識別子は, SGML言語とは関係しない要件も含んだ,その文書に対する追加的な要件を識別する。 これらの要件は, この規格の要件事項に追加されるものとするが, この規格の要件事項と矛盾するものであってはならない。 追加要件を満たせなくても, 報告可能なマーク付けエラーとはしない。

  備考 例えば, あるSGMLシステムは, このパラメタを, 特定の実体制約に関する表明の要件の存在, 指定された要素型に関するフォーマティングの慣習, 又は表の行中のセルの数がある属性で指定された数を超えないなどのデータに関する制限, を通知するために使うことができる。追加的に必要となる, 実体に関する表明がSGML宣言中に存在していない場合は, 報告可能なマーク付けエラーとはしない。それらの表明が存在する場合, 文書がそれを満たしていなければ報告可能なマーク付けエラーとする。それは, たとえ追加要件がなかった場合でも同じとする。

そのシステムが, 公開識別子によって名前付けられたオブジェクトにアクセスできない場合は,エラーとはしない。

  備考 附属書L "XMLに関する追加要件"を参照すること。

K.4 一般事項

K.4.1 16進文字参照

[62] character reference =
         named character reference |
         numeric character reference |
         hex character reference

[62.1] named character reference =
       cro, function name, reference end

[62.2] numeric character reference =
       cro, character number, reference end

[62.3] hex character reference =
       hcro, hexdigit+, reference end

hexdigitは, 数字, 小文字a〜f又は大文字A〜Fとする。 16進数字列の長さは,NAMELENを超えることができない。

K.4.2 区切り子

[9.6(JIS X 4151においては, 8.6)を参照。]

名前  

文字列  

番号   

モード  

制約  

説明  

HCRO

(none)

(none)

CON LIT

HEX

Hex文字参照開始

NESTC

(NET)

(none)

TAG

 

NET可能開始タグ終了

NET

/

47

CON

ELEM

Null終了タグ

HEX制約は, 後にhexdigitが続かなければならない。

NESTCに区切り子文字列が割り当てられなければ, NETを用いる。

K.4.3 NET可能開始タグ

[18] net-enabling start-tag =
        stago,
         generic identifier specification, attribute specification list, s*,
        nestc

K.4.4 属性定義

[141] attribute definition list declaration =
         mdo, "ATTLIST", ps+,
          ((associated element type | (rni, ("IMPLICIT"|"ALL")))|
          (rni, "NOTATION", ps+,
          (associated notation name | (rni, ("IMPLICIT"|"ALL"))))), ps+,
          attribute definition list,
          ps*, mdc
ここで, キーワードは属性に関連付けられたオブジェクトを示す。
  a) NOTATIONは, 関連付けられたオブジェクトが記法であることを示す。
  b) IMPLICITは, すべての暗黙的に宣言された要素型又は記法, 及びそのDTD特性がDTDデータ実体中で
     表現されるものを意味する。
  c) ALLは,すべての要素型又は記法を意味する。
[149.1] associated notation name =
            (notation name | name group)

IMPLICIT及びALLは, name groupと等価とする。

同一の要素型又は記法は,複数のATTLIST宣言における関連するオブジェクトであってもよい。 関連付けられたオブジェクトに対して, 既に定義済みである属性を再定義しようとすることは, エラーとはせず,(実体宣言の場合と同様に)最初の定義が優先される。

しかし, ALLと関連付けられた定義は, 特定の要素型又は記法に対する後続の属性宣言(IMPLICITが指定された宣言を含む。)によって上書きできる。ただし, その属性が既に指定されている場合は除く。そのために, ALLで宣言されたデータ属性を指定し, それからその属性を再宣言しようとすることはエラーとする。

K.4.4.1 空であってもよい属性定義リスト

[142] attribute definition list =
          (attribute definition, (ps+, attribute definition)*)?

K.4.4.2 宣言値

[145] declared value =
          "CDATA"|"ENTITY"|"ENTITIES"|"ID"|"IDREF"|"IDREFS"|"NAME"|"NAMES"|
          "NMTOKEN"|"NMTOKENS"|"NUMBER"|"NUMBERS"|"NUTOKEN"|"NUTOKENS"|
          notation|name token group|data specification

11.3.3(JIS X 4151においては, 10.3.3)の最後から2番目の段落を次で置き換える。

トークンは, そのトークンがそれぞれ異なる属性定義の名前トークングループ又は名前グループの中に出現するという条件のもとでは, 一つの属性定義リストに2回以上出現できる。値がこれらの重複したトークンである属性指定においては, 省略属性名最小化は使用できない。

K.4.4.3 データ指定

[145.1] data specification =
            "DATA", ps+, notation name, data attribute specification?
ここで, 
  a) “notation name”は, 属性値のデータ内容記法を識別する。
  b) “data attribute specification”は, 対応するデータ属性を指定する。

宣言値が“data specification”である属性の値は, 文字データとする。

  備考 応用は, データ指定属性の値が, 指定された記法名及びデータ属性に照らして意味があることの検証を希望してもよいが, 意味がない場合でも報告可能なエラーとはしない。

K.4.5 暗黙の文書型名

[111] document type name =
          (generic identifier | (rni, "IMPLIED"))
ここで, IMPLIEDは, 文書要素が妥当な任意の要素型名をもてることを意味する。

IMPLIEDが指定されていて,文書要素の開始タグが省略されているか又は共通識別子を含まない場合は, 報告可能なマーク付けエラーとする。

IMPLIEDは, SGML宣言において LINK EXPLICIT YES 又は CONCUR YES が指定されている場合には指定できない。

K.4.6 公開識別子中のインタネットドメイン名

[80] owner identifier =
         ISO owner identifier |
         registered owner identifier |
         unregistered owner identifier |
         internet domain name owner identifier

[83.1] internet domain name owner identifier =
           "+//IDN ", minimum data
ここで, “minimum data”は, インタネットドメイン名で始まらなければならない。

  備考1 文字列“IDN domain.name”又は“IDN domain.name/sub-domain/sub-domain”は, JIS X 4172:1998(ISO/IEC 9070:1991)の“登録済み所有者接頭部”として扱われる。ドメインの任意のサブドメインは, 所有者名要素を使って識別することもできる。例えば,“someisp.net”という名前のインタネットドメイン及びそのインタネットドメインのURL“http://www.someisp.net/users/mtb”の中のサブドメインは, 公式公開識別子中において, 次のどれかの形で表すことができる。
+//IDN someisp.net::www::users::mtb
又は
+//IDN www.someisp.net/users/mtb
  備考2 公開テキスト所有者識別子を, インタネットドメイン名を用いて構築する場合, 利用者はその名前の潜在的寿命と, それが識別するオブジェクトの寿命とを考慮することを希望してよい。

セミコロン, 感嘆符, アスタリスク, 番号記号, 単価記号, ドル記号, 下線及びパーセント記号は, 抽象文字クラス“special”のメンバであり, 最小データ中で用いることができる。

K.4.7 要素

強制空要素は, 空白, その他のマーク付け又は包含された下位要素を含むテキストを含むことができない。マーク付け最小化は, この要素に適用できる。

K.4.8 実体

K.4.8.1 トークン分離子

[10.1.3(JIS X 4151においては, 9.1.3)を参照。]

参照されるパラメタ実体は, その参照を含むtsの後に同じグループ中で(すなわち同じ入れ子レベルで)続く, 0個以上の連続した完全なトークンと, それらのトークン間のts分離子及び接続子並びにオプションとしてトークンを取り囲む分離子及び接続子とから構成されなければならない。 実体は, 同一のグループ中で終了しなければならない。

ts中において, Eeは, そのEeが終了させる実体への参照が同じグループの中で(すなわち同じ入れ子レベルの中で)出現した場合だけ出現できる。

K.4.8.2 実体集合

[113] entity set =
          (entity declaration |
           notation declaration |
           attribute definition list declaration |
           ds)*
ここで,キーワード"NOTATION"は,個々の属性定義宣言リストの中で指定されなければならない。

K.4.8.3 SGML副文書実体

[3] SGML subdocument entity =
        (s*, SGML declaration)?, prolog, document instance set, Ee

K.4.9 省略前付け

LINK EXPLICIT NO及びCONCUR NOがSGML宣言で指定され, IMPLYDEF DOCTYPE YES又はIMPLYDEF ELEMENT YESの一方又は両方が指定されている場合であって,文書インスタンスが完全タグ付き又は充足タグ付きである場合, SGML文書実体は前付け[7.1(JIS X 4151においては, 6.1)]を含む必要はない。それらの場合, 前付けは, 次に示す単一の暗黙の文書型宣言だけからなるものと暗黙的に見なされる。

  aIMPLYDEF DOCTYPE YESが指定された場合
<!DOCTYPE #IMPLIED SYSTEM>
  bIMPLYDEF DOCTYPE NO が指定された場合
<!DOCTYPE #IMPLIED>
  備考 文書型名及び外部部分集合実体の両方が文書型宣言の中で暗黙的に指定されている場合, システムは, SGML文書実体の記憶識別子及び/又は文書要素の共通識別子を考慮して適切な外部部分集合を位置決めすることができてもよい。

SGML宣言の暗黙のデフォルト宣言パラメタによって許可されている場合, 文書型宣言(明示的又は暗黙的のどちらでもよい。)は, 要素型, 属性, 記法, 及び/又は一般実体に対する宣言を欠いていてもよい。それらに対する宣言は,K.3.7で示すとおり暗黙的に与えられる。

  備考 インスタンスに関連付けられた文書型宣言の一部又は全部が利用できないか, 又は他の理由で構文解析時に無視された場合,
a構築されるグローブは, 暗黙の宣言によって無視された宣言を置き換えたものと同一になることが望ましい。
bインスタンスが完全宣言済みであるかどうかに関らず, 構築されるグローブは, 適合SGML構文解析系によって存在する宣言すべてを処理した場合に構築されるグローブとは異なっていても構わない。

K.4.10 DTDデータ実体

K.4.10.1 DTD記法

DTD記法によって表現される特性を認識できる範囲内において, SGMLシステムは,それらをマーク付け宣言によって表現されるDTD特性と同じものとして扱わなければならない。

あるDTDデータ実体が参照され, 必す(須)DTD特性のその表現がシステムによって理解されず, それらに対するデフォルト宣言を暗黙的に与えることが許されない場合, 報告可能なマーク付けエラーとする。

  備考 そのために, 暗黙のデフォルト宣言が許される場合, 理解できないDTD記法の使用は, 等価なマーク付け宣言を省略したときと同じ効果をもつ。

K.4.10.2 外部パラメタ実体宣言

外部パラメタ実体に対する実体宣言[10.5.5(JIS X 4151においては, 9.5.5)]は, データ記法の名前を指定する実体型を含むことができる。

K.4.10.3 外部部分集合実体

生成規則[110]を次で置き換える。

[110] document type declaration =
          mdo, "DOCTYPE", ps+, document type name,
          (ps+, external identifier,
          (ps+, ("CDATA"|"NDATA"|"SDATA"), ps+, notation name)?)?,
          (ps+, dso, document type declaration subset, dsc)?,
          ps*, mdc

記法名は, 文書型宣言の内部部分集合内で宣言しなければならない。

  備考 データ属性をDTDデータ実体に対して指定する場合, その実体は, 実体宣言によって宣言されなければならない。すなわち,その実体は外部部分集合実体となることはできない。

K.4.11 内容モデル

[11.2.4, 11.2.5(JIS X 4151においては, それぞれ10.2.4, 10.2.5)を参照。]

[129] primitive content token =
          ( rni , ("PCDATA" | "ALL" | "IMPLICIT")) | element token | data tag group
ここで,ALL及びIMPLICITは,K.4.4におけるのと同じ意味をもち,オプションの繰返し可能なORグループと等価とする。

#ALL及び#IMPLICITは, 生成規則[139]及び[140]の名前グループにおいて使用可能とする。それらはK.4.4におけるのと同じ意味をもつ。