ISO/IEC JTC1/SC34 N0029

ISO/IEC JTC1/SC34
Document Description and Processing Languages

Title: Final text of revised TC2 to ISO 8879:1986 
(merged text of TC2 and TC3)
Source: SC34
Project: JTC1.18.15.1
Project editor: Charles F. Goldfarb
Status of document: Final text
Requested action: For processing by SC34 Secretariat.
Date 6 December 1998
Distribution: SC34 "P" and "O" members and liaisons
References: SC34 N0024
Supersedes:  
Reply To: Dr. James D. Mason 
(ISO/IEC JTC1/SC34 Acting Convenor) 
Information Management Services 
1060 Commerce Park 
Oak Ridge, TN 37830 U.S.A. 
Telephone: +1 423 574-6973 
Facsimile: +1 423 574-6983 
Network: masonjd@ornl.gov 
http://www.ornl.gov/sgml/wg4/ 
ftp://ftp.ornl.gov/pub/sgml/wg4/

ISO 8879 TC2

この規格中に現れる"要素宣言"は、すべて"要素型宣言"に変更する。

この規格中に現れる"要素集合"は、すべて"要素型集合"に変更する。

4.223を、次のとおりに置き換える:

4.223 所有者識別子 (owner identifier) 所有者を識別する、公開識別子の部分。

備考 ある公開識別子の所有者が、その公開識別子が識別するオブジェクトの所有者である必要はない。

次に示す附属書K(規格)及び附属書L(参考)を、ISO 8879に追加する。

附属書K (規格) Web SGML適応

の附属書は、SGMLのWorld Wide Web (WWW)、イントラネット及びエクストラネットへの多様な適応によって明らかになった欠陥を矯正する。 この附属書は、誤りを修正し、既存の適合文書を不適合にすることのない明確な解法のあるあいまいさは解決し、その他のあいまいさについては代替的な解法を選択できるようにする。 本来この附属書はWorld Wide Webへの適用を想定しているが、SGMLのあらゆる用途に適用できる。

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

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宣言によって必要とされない場合でも、システムは、処理を起動する際のパラメタ等によって、インスタンスが充足タグ付きであるかどうかを検証するよう指示する手段を提供することが望ましい。

備考

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

より正確に言うと、充足タグ付き文書インスタンスは、7.3.1.2で規定する三つの条件 a)、b)又はc) のいずれかを満たす、暗黙に宣言された型の要素の終了タグを省略することができる。

次に示す充足タグ付き文書インスタンスは、"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)

自分と同じ型の下位要素をその直接の内容として含んでいる要素。

備考 次に示す完全タグ付きテキスト中において、最初の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>

システムは、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文書。

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

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

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特性を表現する能力を備えたデータ記法。

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

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

備考 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)]

外部副集合実体、又はパラメタ実体名を付けて宣言された実体。

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

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

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

K.3 SGML宣言 (SGML declaration)

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

SGML文書を自己識別的にするために、すべての適合SGML文書はいずれかの形式の SGML宣言を含むことを強く推奨する。

K.3.1 SGML宣言参照 (SGML declaration reference)

[171.1] SGML declaration reference =
            name, external identifier?

ここで、"name"は参照具象構文における名前とする。
      "external identifier"は、SGML宣言本体を参照していなければならない。 
       省略された場合、external identifierは"SYSTEM"となる。

公式公開識別子は、SGML宣言本体を識別するために、公開識別子クラス(10.2.2.1) "SD"を用いる。

備考 例えば、次のようにする。

    <!SGML HTML3.2 PUBLIC "+//IDN W3C.ORG//SD HTML Version 3.2//EN">

10.2.2.1内の文章「その名前は…でなければならない」を「その名前は…であることが望ましい」に変更する。

K.3.2 SGML宣言本体 (SGML declaration body)

[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)?

最小リテラルの最小データは、次のいずれかとする。

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

WWW接尾部は、その文書が、この規格の附属書K (この附属書)に適合することを示す。附属書Kは、この規格の附属書Jを包含し、更にこの規格の規定のうち、附属書Kの規定と矛盾するものをすべて置き換える。

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

備考 しかしながら、パラメタはすべて指定することを推奨する。

K.3.3 容量集合 (Capacity Set)

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

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

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

K.3.4 具象構文 (Concrete syntax)

[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 量集合 (Quantity Set)

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

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

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

K.3.4.2 定義済みデータ文字実体 (Predefined data character entities)

[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 マーク付け最小化機能 (Markup minimization features)

[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開始タグオプション (SHORTTAG start-tag options)

[196.1] start-tag options =
            "STARTTAG", ps+,
            "EMPTY", ps+, ("NO"|"YES"), ps+,
            "UNCLOSED", ps+, ("NO"|"YES"), ps+,
            "NETENABL", ps+, ("NO"|"ALL"|"IMMEDNET")
ここで:   EMPTY YESは、empty start-tagを可能にする。
   UNCLOSED YESは、unclosed start-tagを可能にする。
   NETENABL ALLは、終了タグを持つことを許されたすべての要素について、
   NET-enabling start-tagを可能にする。
   NET-enabling start-tagで始まる要素はnull end-tagで終了してもよいが、必ずしもそうする必要はない。
   NETENABL IMMEDNET ("immediate NET")は、終了タグを持つことを許された要素で、
   かつ開始タグと終了タグとの間にテキストを持たない要素をNET-enabling start-tagで始めることを可能にする。
   ただし、これはその要素がnull end-tagで終了することが条件となる。

備考1 開始タグと終了タグとの間にテキストを持たない要素が、強制空要素である必要はない。

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

備考 例えば、nestcが"/"でnetが">"であり、"img"は強制空要素ではないか、又は強制空要素でありかつEMPTYNRM YESが指定されているとする。このとき、

    <img></img>

の代わりに、

    <img/> 

を用いることができる。

K.3.5.2 SHORTTAG終了タグオプション (SHORTTAG end-tag options)

[196.2] end-tag options =
            "ENDTAG", ps+,
            "EMPTY", ps+, ("NO"|"YES"), ps+,
            "UNCLOSED", ps+, ("NO"|"YES")

ここで、
   EMPTY YESは、empty end-tagを可能にする。
   UNCLOSED YESは、unclosed end-tagを可能にする。

K.3.5.3 SHORTTAG属性オプション (SHORTTAG attribute options)

[196.3] attribute options =
            "ATTRIB", ps+,
            "DEFAULT", ps+, ("NO"|"YES"), ps+,
            "OMITNAME", ps+, ("NO"|"YES"), ps+,
            "VALUE", ps+, ("NO"|"YES")

ここで、
   DEFAULT YESは、属性値の省略を可能にする(7.9.1.1)。
   OMITNAME YESは、一意なNMTOKEN値に対して、属性名及びviの省略を可能にする(7.9.1.2)。
   VALUE YESは、ある種の属性値を、リテラルとしてではなく、区切り子なしで
   指定することを可能にする(7.9.3.1)。

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

K.3.6 空要素終了規則 (Empty element ending rules)

[196.4] empty element ending rules =
            "EMPTYNRM", ps+, ("NO"|"YES")

ここで、
  EMPTYNRM YESは、EMPTYと宣言された要素型の要素、
  又は明示的な内容参照属性(7.3.)によって強制的に空となった要素に対して、
  マーク付け最小化規則を含む、終了タグの存在に関する通常の規則を適用することを示す。

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

K.3.7 暗黙のデフォルト宣言 (Implied default declarations)

[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")

ここで、
  DOCTYPE YESは、暗黙の文書型宣言が、外部副集合実体(K.4.9参照)の暗黙の宣言を含むことを意味する。
  他のパラメタに対するYES指定は、指定された型の情報を、明示的な宣言なしに完全タグ付き又は
  充足タグ付き文書インスタンス中で使用することを許す。
  その代わり、省略された宣言は次に示すとおりに解釈される:
    ATTLIST YESは、宣言されない属性が、 CDATA #IMPLIED と宣言されることを意味する。
    ELEMENT YESは、宣言されない要素型が、- O ANY と宣言されることを意味する。
    ELEMENT ANYOTHERは、宣言されない要素型が、- O ANY と宣言されることを意味する。
    ただし、この型の直接再帰要素は禁止される。
    ENTITY YESは、宣言されない一般実体が、SYSTEM と宣言されることを意味する。
    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が適用されないことを意味する。

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

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

K.3.8.3 表明

[198.3] validity feature = ps+,
            "VALIDITY", ps+, ("NOASSERT"|"TYPE")
ここで、
  NOASSERT は、正当性に関する表明を行わないことを示す。
  TYPEが指定された場合、文書インスタンスは型正当であることを示す。
  パラメタが省略された場合、TYPEが指定されたものと見なされる。

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

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

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

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

備考 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)

 名前 

 文字列 

 番号 

 モード 

 制約条件 

         説明        

HCRO

(none)

(none)

CON LIT

HEX

Hex character reference open

NESTC

(NET)

(none)

TAG

 

NET-enabling start-tag close

NET

/

47

CON

ELEM

Null end-tag

制約HEX: 後ろにhexdigitが続いていなければならない。

NESTCに区切り子文字列が割り当てられなかった場合、NETのそれが用いられる。

K.4.3 NET可能開始タグ(NET-enabling start-tag)

[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
ここで、キーワードは属性に関連付けられる対象を示す。
  NOTATIONは、記法が関連付けられる対象であることを示す。
  IMPLICITは、すべての暗黙的に宣言された要素型又は記法、
  及びそのDTD特性がDTDデータ実体中で表現されるものが対象であることを示す。

[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の最後から2番目の段落を以下のもので置き換える。

トークンは、個々のトークンがそれぞれ異なる属性定義の名前トークングループ又は名前グループの中に出現するのであれば、同じトークンが1回以上現れてもよい。 値がそのような重複したトークンである属性指定においては、属性名の省略最小化は使えない。

K.4.4.2 データ指定

[145.1] data specification =
            "DATA", ps+, notation name, data attribute specification?
ここで、
  “notation name”は、属性値のデータ内容記法を識別する。
  “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”は、インターネットドメイン名で始まらなければならない。

備考 文字列“IDN domain.name”又は“IDN domain.name/sub-domain/sub-domain”は、ISO/IEC 9070の登録済み所有者名接頭部として扱われる。ドメインの任意のサブドメインは、所有者名要素として表現することができる。例えば、“someisp.net”という名前のインターネットドメイン及びURL“http://www.someisp.net/users/mtb”の中のサブドメインは、公式公開識別子中において、次のいずれかの形で表すことができる。

+//IDN someisp.net::www::users::mtb

又は

+//IDN www.someisp.net/users/mtb

備考 公開テキスト所有者識別子を、インターネットドメイン名を用いて構築する際、ユーザはその名前の潜在的寿命と、それが識別するオブジェクトの寿命とを識別したいと思うかもしれない。

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

K.4.7 要素

強制空要素は、いかなるテキスト(空白をも含む)も、その他のマーク付け及び包含された下位要素をも含むことができない。 このような要素に対して、マーク付け最小化を適用することができる。

K.4.8 実体

K.4.8.1 トークン分離子 (10.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 前付け(7.1)の省略

LINK EXPLICIT NO及びCONCUR NOがSGML宣言で指定され、IMPLYDEF DOCTYPE YES又はIMPLYDEF ELEMENT YESの一方又は両方が指定され、更に文書インスタンスが完全タグ付き又は充足タグ付きである場合、SGML文書実体は前付けを含む必要はない。そのような場合、前付けは、次に示す単一の暗黙の文書型宣言だけからなるものと暗黙のうちに見なされる。

備考 文書型名及び外部部分集合実体の両方が文書型定義中で暗黙のうちに指定されている場合、システムは、SGML文書実体の記憶識別子及び/又は文書要素の共通識別子を考慮して適切な外部部分集合を位置付けることができてもよい。

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

備考 インスタンスに関連付けられた文書型宣言の一部又は全部が利用できないか、又は他の理由で構文解析時に無視された場合、

  1. 構築されるグローブは、暗黙の宣言によって無視された宣言を置き換えたものと同一になることが望ましい。更に、
  2. インスタンスが完全宣言済みであるかどうかに関らず、構築されるグローブは、適合SGML構文解析系によって存在する宣言すべてを処理した場合に構築されるグローブとは異なっていても構わない。

K.4.10 DTD データ実体

K.4.10.1 DTD 記法

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

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

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

K.4.10.2 外部パラメタ実体宣言(10.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)

[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.におけると同じ意味を持つ。

附属書L(参考): XMLに対する追加要求

この附属書は、SGML宣言と実世界の例であるXMLによる"追加要求" との関係を示す。これは、XMLの仕様となることを意図したものではない。

L.1 応用の要約

拡張可能マーク付け言語(XML)は、SGML文書をWWWで交換するためにWorld Wide Web Consortium (W3C)において開発されたSGML機能の核サブセットである。XMLの現在の仕様は、W3CのWebサイト"http://www.w3.org/TR/"において、"Extensible Markup Language (XML)"というタイトルで見つけることができる。

XML仕様は、SGMLの応用及びシステムにおける、次に示す側面をカバーする。

  1. いくつかのSGML言語構文の使用に関する制限
  2. 必須の文字集合及び符号化
  3. 実体管理系の振る舞いに関する規則
  4. 機能付与体系にふさわしい型の応用セマンティクス。すなわち、完全なDTDではないもの及びそれに関連付けられたセマンティクス。 反対に、HTMLのようなSGML応用は、通常、完全なDTDとそのすべての要素型及び属性に対して定義されたセマンティクスを持つ。
  5. 応用とSGML/XML構文解析系との間のインタフェースの詳細は、ISO 8879および関連規格で言及されている事柄の範囲を超えている。

XMLは、2つのクラスの適合文書を区別する。

完全SGML検証構文解析系は、XMLをサポートするよう特別に修正されなければ、 XMLに対する適合性に関して文書を検証することはできない。 これは、XMLの言語制約のいくつかがSGML宣言では表現できないからである。それらの制約はhttp://www.w3.org/TR/NOTE-sgml-xmlで見ることができる。

L.2 XMLのためのSGML 宣言

XML文書は、暗黙のうちに、文書が型正当であることを要求しない以下のSGML宣言 を持っている。しかし、型正当性は"検証プロセサ"が起動されたときに 表明される。

<!SGML -- SGML Declaration for XML --
     "ISO 8879:1986 (WWW)"
CHARSET
  BASESET
    "ISO Registration Number 176//CHARSET
    ISO/IEC 10646-1:1993 UCS-4 with implementation
    level 3//ESC 2/5 2/15 4/6"
  DESCSET
    0       9       UNUSED
    9       2       9
    11      2       UNUSED
    13      1       13
    14      18      UNUSED
    32      95      32
    127     1       UNUSED
    128     32      UNUSED
    160     55136   160
    55296   2048    UNUSED  -- surrogates --
    57344   8190    57344
    65534   2       UNUSED  -- FFFE and FFFF --
    65536   1048576 65536
CAPACITY NONE

SCOPE DOCUMENT

SYNTAX
  SHUNCHAR NONE
  BASESET "ISO Registration Number 176//CHARSET
          ISO/IEC 10646-1:1993 UCS-4 with implementation
          level 3//ESC 2/5 2/15 4/6"
  DESCSET
    0 1114112 0
  FUNCTION
    RE    13
    RS    10
    SPACE 32
    TAB   SEPCHAR 9
  NAMING
    LCNMSTRT ""
    UCNMSTRT ""
    NAMESTRT
      58 95 192-214 216-246 248-305 308-318 321-328
      330-382 384-451 461-496 500-501 506-535 592-680
      699-705 902 904-906 908 910-929 931-974 976-982
      986 988 990 992 994-1011 1025-1036 1038-1103
      1105-1116 1118-1153 1168-1220 1223-1224
      1227-1228 1232-1259 1262-1269 1272-1273
      1329-1366 1369 1377-1414 1488-1514 1520-1522
      1569-1594 1601-1610 1649-1719 1722-1726
      1728-1742 1744-1747 1749 1765-1766 2309-2361
      2365 2392-2401 2437-2444 2447-2448 2451-2472
      2474-2480 2482 2486-2489 2524-2525 2527-2529
      2544-2545 2565-2570 2575-2576 2579-2600
      2602-2608 2610-2611 2613-2614 2616-2617
      2649-2652 2654 2674-2676 2693-2699 2701
      2703-2705 2707-2728 2730-2736 2738-2739
      2741-2745 2749 2784 2821-2828 2831-2832
      2835-2856 2858-2864 2866-2867 2870-2873 2877
      2908-2909 2911-2913 2949-2954 2958-2960
      2962-2965 2969-2970 2972 2974-2975 2979-2980
      2984-2986 2990-2997 2999-3001 3077-3084
      3086-3088 3090-3112 3114-3123 3125-3129
      3168-3169 3205-3212 3214-3216 3218-3240
      3242-3251 3253-3257 3294 3296-3297 3333-3340
      3342-3344 3346-3368 3370-3385 3424-3425
      3585-3630 3632 3634-3635 3648-3653 3713-3714
      3716 3719-3720 3722 3725 3732-3735 3737-3743
      3745-3747 3749 3751 3754-3755 3757-3758 3760
      3762-3763 3773 3776-3780 3904-3911 3913-3945
      4256-4293 4304-4342 4352 4354-4355 4357-4359
      4361 4363-4364 4366-4370 4412 4414 4416 4428
      4430 4432 4436-4437 4441 4447-4449 4451 4453
      4455 4457 4461-4462 4466-4467 4469 4510 4520
      4523 4526-4527 4535-4536 4538 4540-4546 4587
      4592 4601 7680-7835 7840-7929 7936-7957
      7960-7965 7968-8005 8008-8013 8016-8023 8025
      8027 8029 8031-8061 8064-8116 8118-8124 8126
      8130-8132 8134-8140 8144-8147 8150-8155
      8160-8172 8178-8180 8182-8188 8486 8490-8491
      8494 8576-8578 12295 12321-12329 12353-12436
      12449-12538 12549-12588 19968-40869 44032-55203
    LCNMCHAR ""
    UCNMCHAR ""
    NAMECHAR
      45-46 183 720-721 768-837 864-865 903 1155-1158
      1425-1441 1443-1465 1467-1469 1471 1473-1474
      1476 1600 1611-1618 1632-1641 1648 1750-1764
      1767-1768 1770-1773 1776-1785 2305-2307 2364
      2366-2381 2385-2388 2402-2403 2406-2415
      2433-2435 2492 2494-2500 2503-2504 2507-2509
      2519 2530-2531 2534-2543 2562 2620 2622-2626
      2631-2632 2635-2637 2662-2673 2689-2691 2748
      2750-2757 2759-2761 2763-2765 2790-2799
      2817-2819 2876 2878-2883 2887-2888 2891-2893
      2902-2903 2918-2927 2946-2947 3006-3010
      3014-3016 3018-3021 3031 3047-3055 3073-3075
      3134-3140 3142-3144 3146-3149 3157-3158
      3174-3183 3202-3203 3262-3268 3270-3272
      3274-3277 3285-3286 3302-3311 3330-3331
      3390-3395 3398-3400 3402-3405 3415 3430-3439
      3633 3636-3642 3654-3662 3664-3673 3761
      3764-3769 3771-3772 3782 3784-3789 3792-3801
      3864-3865 3872-3881 3893 3895 3897 3902-3903
      3953-3972 3974-3979 3984-3989 3991 3993-4013
      4017-4023 4025 8400-8412 8417 12293 12330-12335
      12337-12341 12441-12442 12445-12446 12540-12542
  NAMECASE GENERAL NO  ENTITY NO
  DELIM
      GENERAL  SGMLREF
      HCRO     "&#38;#x"
               -- Ampersand followed by "#x" (without quotes) --
      NESTC    "/"
      NET      ">"
      PIC      "?>"
      SHORTREF NONE
  NAMES     SGMLREF
  QUANTITY  NONE
  ENTITIES  "amp" 38 "lt" 60 "gt" 62 "quot" 34 "apos" 39

FEATURES
  MINIMIZE
    DATATAG NO
    OMITTAG NO
    RANK    NO
    SHORTTAG
      STARTTAG EMPTY    NO  UNCLOSED NO  NETENABL IMMEDNET
      ENDTAG   EMPTY    NO  UNCLOSED NO
      ATTRIB   DEFAULT  YES OMITNAME NO  VALUE    NO
    EMPTYNRM YES
    IMPLYDEF ATTLIST  YES DOCTYPE  NO  ELEMENT  YES
             ENTITY   NO  NOTATION YES
  LINK  SIMPLE   NO  IMPLICIT NO  EXPLICIT NO
  OTHER CONCUR   NO  SUBDOC   NO  FORMAL   NO  URN  NO
        KEEPRSRE YES VALIDITY NOASSERT ENTITIES REF ANY  INTEGRAL YES

APPINFO NONE

SEEALSO "ISO 8879//NOTATION
         Extensible Markup Language (XML) 1.0//EN"
>

SEEALSO パラメタの公開識別子は、W3Cが所有するXML 1.0 勧告を識別していることに注意すること。文字列"ISO 8879"は、単にその文書のこの特定の公開識別子 が、この規格に従って作成されたことを意味するものにすぎない。