From ISO 8879:1986 as reproduced in The SGML Handbook by Charles F. Goldfarb, copyright © 1986, 1988, 1990; from TC for Extended Naming Rules for SGML, copyright © 1996; and from ISO 8879 TC2 ("WebSGML"), copyright © 1997; all copyrights held by the International Organization for Standardization. Excerpted as fair use, as a reference for those with access to the Standard. This information does not stand on its own, and is not useful without the defining text of the Standard.
There are syntactic errors in ISO 8879 TC2, including trailing commas at the end of productions. Those errors are faithfully reproduced here, with the exception that clause K.4.8.3 clearly intended to replace production [3] and not production [2]. A list of what I believe the errors in productions to be is available. Most of the error corrections are being incorporated in a draft corrigendum.
[This document was created in 1995 for my own reference, and
updated for the TCs in 1997. I hardly do anything with full SGML any
more, and haven't needed this in quite some time, but I've kept it for
historical interest. I've deliberately decided not to update it from
its original HTML 2.0 for that reason; note in particular the use of
pre
elements instead of tables.]
[1] [2] [3] [4] [5] [5.1] [5.2] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [35.1] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [62.1] [62.2] [62.3] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [83.1] [84] [85] [86] [87] [87.1] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [145.1] [146] [147] [148] [149] [149.1] [149.2] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [163.1] [164] [165] [166] [166.1] [167] [168] [168.1] [169] [170] [171] [171.1] [171.2] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [189.1] [189.2] [190] [191] [192] [193] [194] [194.1] [195] [196] [196.1] [196.2] [196.3] [196.4] [196.5] [197] [198] [198.1] [198.2] [198.3] [198.4] [199] [199.1] [200] [201] [202] [203] [204]
Characters Numbers Description Digit 0-9 48-57 Digits Ee system signal Entity end signal hexdigit 0-9 A-F a-f 48-57 65-70 Hexadecimal digits 97-102 LC Letter a-z 97-122 Lower-case letters Special '()+,-./:=? 39-41 43-47 Special minimum data characters 58 61 63 UC Letter A-Z 65-90 Upper-case letters
DATACHAR implicit implicit Dedicated data characters DELMCHAR implicit implicit Delimiter characters FUNCHAR none none Inert function characters LCNMCHAR -. 45 46 Lower-case name characters LCNMSTRT none none Lower-case name start characters MSICHAR none none Markup-scan-in characters MSOCHAR none none Markup-scan-out characters MSSCHAR none none Markup-scan-suppress characters NONSGML Unused characters from declaration RE 13 Record end character RS 10 Record start character SEPCHAR 9 Separator characters SPACE 32 Space character UCNMCHAR -. 45 46 Upper-case name characters UCNMSTRT none none Upper-case name start characters
and & com -- cro dsc ] dso [ dtgc ] dtgo [ ero & etago </ grpc ) grpo ( hcro (none) lit " lita ' mdc > mdo <! minus - msc ]] nestc net net / opt ? or | pero % pic > pio <? plus + refc ; rep * rni # seq , shortref "#%'()*+,-:;=@[]^_{|}~ TAB; RE; RS; RS;B RS;RE; RS;BRE; BRE; SPACE; BB -- stago < tagc > vi =
SGML document =
SGML document entity,
(
SGML subdocument entity |
SGML text entity |
character data entity |
specific character data entity |
non-SGML data entity )*
SGML document entity =
s*,
SGML declaration,
prolog,
document instance set,
Ee
SGML subdocument entity =
(
s*,
SGML declaration )?,
prolog,
document instance set,
Ee
SGML text entity =
SGML character*,
Ee
s =
SPACE |
RE |
RS |
SEPCHAR
character data entity =
SGML character*,
Ee
specific character data entity =
SGML character*,
Ee
non-SGML data entity =
character*,
Ee
prolog =
other prolog*,
base document type declaration,
(
document type declaration |
other prolog )*,
(
link type declaration |
other prolog )*
other prolog =
comment declaration |
processing instruction |
s
base document type declaration =
document type declaration
document instance set =
base document element,
other prolog*
base document element =
document element
document element =
element
element =
start-tag?,
content,
end-tag?
start-tag =
(
stago,
document type specification,
generic identifier specification,
attribute specification list,
s*,
tagc ) |
minimized start-tag
minimized start-tag =
empty start-tag |
unclosed start-tag |
net-enabling start-tag
empty start-tag =
stago,
tagc
unclosed start-tag =
stago,
document type specification,
generic identifier specification,
attribute specification list,
s*
net-enabling start-tag =
stago,
generic identifier specification,
attribute specification list,
s*,
nestc
end-tag =
(
etago,
document type specification,
generic identifier specification,
s*,
tagc ) |
minimized end-tag
minimized end-tag =
empty end-tag |
unclosed end-tag |
null end-tag
empty end-tag =
etago,
tagc
unclosed end-tag =
etago,
document type specification,
generic identifier specification,
s*
null end-tag =
net
content =
mixed content |
element content |
replaceable character data |
character data
mixed content =
(
data character |
element |
other content )*
element content =
(
element |
other content |
s )*
other content =
comment declaration |
short reference use declaration |
link set use declaration |
processing instruction |
shortref |
character reference |
general entity reference |
marked section declaration |
Ee
document type specification =
name group?
generic identifier specification =
generic identifier |
rank stem
generic identifier =
name
attribute specification list =
attribute specification*
attribute specification =
s*,
(
name,
s*,
vi,
s* )?
attribute value specification
attribute value specification =
attribute value |
attribute value literal
attribute value literal =
(
lit,
replaceable character data*,
lit ) |
(
lita,
replaceable character data*,
lita )
attribute value =
character data |
general entity name |
general entity name list |
id value |
id reference value |
id reference list |
name |
name list |
name token |
name token list |
notation name |
number |
number list |
number token |
number token list
general entity name list =
name list
id value =
name
id reference list =
name list
id reference value =
name
name list =
name,
(
SPACE,
name )*
name token list =
name token,
(
SPACE,
name token )*
notation name =
name
number list =
number,
(
SPACE,
number )*
number token list =
number token,
(
SPACE,
number token )*
processing instruction =
pio,
system data,
pic
system data =
character data
replaceable character data =
(
data character |
character reference |
general entity reference |
Ee )*
character data =
data character*
data character =
SGML character
character =
SGML character |
NONSGML
SGML character =
markup character |
DATACHAR
markup character =
name character |
function character |
DELMCHAR
name character =
name start character |
Digit |
LCNMCHAR |
UCNMCHAR
name start character =
LC Letter |
UC Letter |
LCNMSTRT |
UCNMSTRT
function character =
RE |
RS |
SPACE |
SEPCHAR |
MSOCHAR |
MSICHAR |
MSSCHAR |
FUNCHAR
name =
name start character,
name character*
number =
Digit+
name token =
name character+
number token =
Digit,
name character*
general entity reference =
ero,
name group?,
name,
reference end
parameter entity reference =
pero,
name group?,
name,
reference end
reference end =
(
refc |
RE )?
character reference =
named character reference |
numeric character reference |
hex character reference
named character reference =
cro,
function name,
reference end
numeric character reference =
cro,
character number,
reference end
hex character reference =
hcro,
hexdigit+,
reference end
function name =
"RE" |
"RS" |
"SPACE" |
name
character number =
number
ps =
s |
Ee |
parameter entity reference |
comment
parameter literal =
(
lit,
replaceable parameter data,
lit ) |
(
lita,
replaceable parameter data,
lita )
replaceable parameter data =
(
data character |
character reference |
parameter entity reference |
Ee )*
name token group =
grpo,
ts*,
name token,
(
ts*,
connector,
ts*,
name token )*,
ts*,
grpc
name group =
grpo,
ts*,
name,
(
ts*,
connector,
ts*,
name )*,
ts*,
grpc
ts =
s |
Ee |
parameter entity reference
ds =
s |
Ee |
parameter entity reference |
comment declaration |
processing instruction |
marked section declaration
associated element type =
generic identifier |
name group
external identifier =
(
"SYSTEM" |
(
"PUBLIC",
ps+,
public identifier ) ),
(
ps+,
system identifier )?
public identifier =
minimum literal
system identifier =
(
lit,
system data,
lit ) |
(
lita,
system data,
lita )
minimum literal =
(
lit,
minimum data,
lit ) |
(
lita,
minimum data,
lita )
minimum data =
minimum data character*
minimum data character =
RS |
RE |
SPACE |
LC Letter |
UC Letter |
Digit |
Special
formal public identifier =
owner identifier,
"//",
text identifier
owner identifier =
ISO owner identifier |
registered owner identifier |
unregistered owner identifier |
internet domain name owner identifier
ISO owner identifier =
minimum data
registered owner identifier =
"+//",
minimum data
unregistered owner identifier =
"-//",
minimum data
internet domain name owner identifier =
"+//IDN ",
minimum data
text identifier =
public text class,
SPACE,
unavailable text indicator?,
public text description,
"//",
(
public text language |
public text designating sequence ),
(
"//",
public text display version )?
unavailable text indicator =
"-//"
public text class =
name
public text description =
ISO text description |
minimum data
ISO text description =
minimum data
public text language =
name
public text designating sequence =
minimum data
public text display version =
minimum data
comment declaration =
mdo,
(
comment,
(
s |
comment )* )?,
mdc
comment =
com,
SGML character*,
com
marked section declaration =
marked section start,
status keyword specification,
dso,
marked section,
marked section end
marked section start =
mdo,
dso
marked section end =
msc,
mdc
marked section =
SGML character*
status keyword specification =
(
ps+,
(
status keyword |
"TEMP" ) )*,
ps*
status keyword =
"CDATA" |
"IGNORE" |
"INCLUDE" |
"RCDATA"
entity declaration =
mdo,
"ENTITY",
ps+,
entity name,
ps+,
entity text,
ps*,
mdc
entity name =
general entity name |
parameter entity name
general entity name =
name |
(
rni,
"DEFAULT" )
parameter entity name =
pero,
ps+,
name
entity text =
parameter literal |
data text |
bracketed text |
external entity specification
data text =
(
"CDATA" |
"SDATA" |
"PI" ),
ps+,
parameter literal
bracketed text =
(
"STARTTAG" |
"ENDTAG" |
"MS" |
"MD" ),
ps+,
parameter literal
external entity specification =
external identifier,
(
ps+,
entity type )?
entity type =
"SUBDOC" |
(
(
"CDATA" |
"NDATA" |
"SDATA" ),
ps+,
notation name,
data attribute specification? )
document type declaration =
mdo,
"DOCTYPE",
ps+,
document type name,
(
ps+,
external identifier )?,
(
ps+,
dso,
document type declaration subset,
dsc )?,
ps*,
mdc
document type name =
(
generic identifier
(
rni,
"IMPLIED" ) )
document type declaration subset =
(
entity set |
element type set |
short reference set )*
entity set =
(
entity declaration |
attribute definition list declaration |
notation declaration |
ds )*
element type set =
(
element type declaration |
attribute definition list declaration |
notation declaration |
ds )*
short reference set =
(
entity declaration |
short reference mapping declaration |
short reference use declaration |
ds )*
element type declaration =
mdo,
"ELEMENT",
ps+,
element type,
(
ps+,
omitted tag minimization )?,
ps+,
(
declared content |
content model ),
ps*,
mdc
element type =
generic identifier |
name group |
ranked element |
ranked group
ranked element =
rank stem,
ps+,
rank suffix
ranked group =
grpo,
ts*,
rank stem,
(
ts*,
connector,
ts*,
rank stem )*,
ts*,
grpc,
ps+,
rank suffix
rank stem =
name
rank suffix =
number
omitted tag minimization =
start-tag minimization,
ps+,
end-tag minimization
start-tag minimization =
"O" |
minus
end-tag minimization =
"O" |
minus
declared content =
"CDATA" |
"RCDATA" |
"EMPTY"
content model =
(
model group |
"ANY" ),
(
ps+,
exceptions )?
model group =
grpo,
ts*,
content token,
(
ts*,
connector,
ts*,
content token )*,
ts*,
grpc,
occurence indicator?
content token =
primitive content token |
model group
primitive content token =
(
rni,
"PCDATA" ) |
element token |
data tag group
element token =
generic identifier,
occurrence indicator?
connector =
and |
or |
seq
occurence indicator =
opt |
plus |
rep
data tag group =
dtgo,
ts*,
generic identifier,
ts*,
seq,
ts*,
data tag pattern,
ts*,
dtgc,
occurrence indicator?
data tag pattern =
(
data tag template group |
data tag template ),
(
ts*,
seq,
ts*,
data tag padding template )?
data tag template group =
grpo,
ts*,
data tag template,
(
ts*,
or,
ts*,
data tag template )*,
ts*,
grpc
data tag template =
parameter literal
data tag padding template =
parameter literal
exceptions =
(
exclusions,
(
ps+,
inclusions )? ) |
inclusions
inclusions =
plus,
name group
exclusions =
minus,
name group
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
attribute definition list =
attribute definition?,
(
ps+,
attribute definition )*
attribute definition =
attribute name,
ps+,
declared value,
ps+,
default value
attribute name =
name
declared value =
"CDATA" |
"ENTITY" |
"ENTITIES" |
"ID" |
"IDREF" |
"IDREFS" |
"NAME" |
"NAMES" |
"NMTOKEN" |
"NMTOKENS" |
"NUMBER" |
"NUMBERS" |
"NUTOKEN" |
"NUTOKENS" |
notation |
name token group |
data specification
data specification =
"DATA",
ps+,
notation name,
data attribute specification?,
notation =
"NOTATION",
ps+,
name group
default value =
(
(
rni,
"FIXED",
ps+ )?,
attribute value specification ) |
(
rni,
(
"REQUIRED" |
"CURRENT" |
"CONREF" |
"IMPLIED" ) )
notation declaration =
mdo,
"NOTATION",
ps+,
notation name,
ps+,
notation identifier,
ps*,
mdc
notation identifier =
external identifier
associated notation name =
(
notation name |
name group )
data attribute specification =
ps+,
dso,
attribute specification list,
s*,
dsc
short reference mapping declaration =
mdo,
"SHORTREF",
ps+,
map name,
(
ps+,
parameter literal,
ps+,
name )+,
ps*,
mdc
map name =
name
short reference use declaration =
mdo,
"USEMAP",
ps+,
map specification,
(
ps+,
associated element type )?,
ps*,
mdc
map specification =
map name |
(
rni,
"EMPTY" )
link type declaration =
mdo,
"LINKTYPE",
ps+,
link type name,
ps+,
(
simple link specification |
implicit link specification |
explicit link specification ),
(
ps+,
external identifier )?,
(
ps+,
dso,
link type declaration subset,
dsc )?,
ps*,
mdc
link type name =
name
simple link specification =
rni,
"SIMPLE",
ps+,
rni,
"IMPLIED"
implicit link specification =
source document type name,
ps+,
rni,
"IMPLIED"
explicit link specification =
source document type name,
ps+,
result document type name
source document type name =
document type name
result document type name =
document type name
link type declaration subset =
(
link attribute set |
link set declaration )*,
ID link set declaration?,
(
link attribute set |
link set declaration )*
link attribute set =
(
attribute definition list declaration |
entity set )*
link set declaration =
mdo,
"LINK",
ps+,
link set name,
(
ps+,
link rule )+
ps*,
mdc
link rule =
source element specification |
explicit link rule
link set name =
name |
(
rni,
"INITIAL" )
source element specification =
associated element type,
(
ps+,
rni,
"USELINK",
ps+,
(
link set name |
(
rni,
"EMPTY" ) ) )?,
(
ps+,
link set specification )?,
link attribute specification?
link attribute specification =
ps+,
dso,
attribute specification list,
s*,
dsc
explicit link rule =
(
source element specification,
ps+,
result element specification ) |
(
source element specification,
ps+,
rni,
"IMPLIED" ) |
(
rni,
"IMPLIED",
ps+,
result element specification )
result element specification =
generic identifier,
result attribute specification?
result attribute specification =
ps+,
dso,
attribute specification list,
s*,
dsc
ID link set declaration =
mdo,
"IDLINK",
(
ps+,
name,
ps+,
link rule )+,
ps*,
mdc
link set use declaration =
mdo,
"USELINK",
ps+,
link set specification,
ps+,
link type name,
ps*,
mdc
link set specification =
link set name |
(
rni,
"EMPTY" ) |
(
rni,
"RESTORE" )
SGML declaration =
"<!SGML",
ps+,
(
SGML declaration body |
SGML declaration reference ),
ps*,
">"
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 )?
SGML declaration reference =
name,
external identifier?
document character set =
"CHARSET",
ps+,
character set description
character set description =
base character set,
ps+,
described character set portion,
(
ps+,
base character set,
ps+,
described character set portion )*
base character set =
"BASESET",
ps+,
public identifier
described character set portion =
"DESCSET",
(
ps+,
character description )+
character description =
described set character number,
ps+,
number of characters,
ps+,
(
base set character number |
minimum literal |
"UNUSED" )
described set character number =
character number
base set character number =
character number
number of characters =
number
capacity set =
"CAPACITY",
ps+,
(
(
"PUBLIC",
ps+,
public identifier ) |
"NONE" |
(
"SGMLREF",
(
ps+,
name,
ps+,
number )+ ) )
concrete syntax scope =
"SCOPE",
ps+,
(
"DOCUMENT" |
"INSTANCE" )
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 )? ) )
public concrete syntax =
"PUBLIC",
ps+,
public identifier,
(
ps+,
"SWITCHES",
(
ps+,
character number,
ps+,
character number )+ )?
shunned character number identification =
"SHUNCHAR",
ps+,
(
"NONE" |
(
(
"CONTROLS" |
character number ),
(
ps+,
character number )* ) )
syntax-reference character set =
character set description
function character identification =
"FUNCTION",
ps+,
"RE",
ps+,
character number,
ps+,
"RS",
ps+,
character number,
ps+,
"SPACE",
ps+,
character number,
(
ps+,
added function,
ps+,
function class,
ps+,
character number )*
added function =
name
function class =
"FUNCHAR" |
"MSICHAR" |
"MSOCHAR" |
"MSSCHAR" |
"SEPCHAR"
naming rules =
"NAMING",
ps+,
"LCNMSTRT",
(
ps+,
extended naming value )+,
ps+,
"UCNMSTRT",
(
ps+,
extended naming value )+,
ps+,
(
"NAMESTRT",
(
ps+,
extended naming value )+,
ps+ )?,
"LCNMCHAR",
(
ps+,
extended naming value )+,
ps+,
"UCNMCHAR",
(
ps+,
extended naming value )+,
ps+,
(
"NAMECHAR",
(
ps+,
extended naming value )+,
ps+ )?,
"NAMECASE",
ps+,
"GENERAL",
ps+,
(
"NO" |
"YES" ),
ps+,
"ENTITY",
ps+,
(
"NO" |
"YES" )
extended naming value =
parameter literal |
character number |
character range
character range =
character number,
ps*,
minus,
ps*,
character number
delimiter set =
"DELIM",
ps+,
general delimiters,
ps+,
short reference delimiters
general delimiters =
"GENERAL",
ps+,
"SGMLREF",
(
ps+,
name,
ps+,
parameter literal )*
short reference delimiters =
"SHORTREF",
ps+,
(
"SGMLREF" |
"NONE" ),
(
ps+,
parameter literal )*
reserved name use =
"NAMES",
ps+,
"SGMLREF",
(
ps+,
name,
ps+,
parameter literal )*
quantity set =
"QUANTITY",
ps+,
(
"NONE" |
(
"SGMLREF",
(
ps+,
name,
ps+,
number )* ) )
predefined data character entities =
"ENTITIES",
ps+,
(
"NONE" |
(
parameter literal,
ps+,
character number )+ )
feature use =
"FEATURES",
ps+,
markup minimization features,
ps+,
link type features,
ps+,
other features
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,
end-tag options,
attribute options ) ) ),
(
ps+,
empty element ending rules,
ps+,
implicit definitions )?
start-tag options =
"STARTTAG",
ps+,
"EMPTY",
ps+,
(
"NO" |
"YES" ),
ps+,
"UNCLOSED",
ps+,
(
"NO" |
"YES" ),
ps+,
"NETENABL",
ps+,
(
"NO" |
"ALL" |
"IMMEDNET" )
end-tag options =
"ENDTAG",
ps+,
"EMPTY",
ps+,
(
"NO" |
"YES" ),
ps+,
"UNCLOSED",
ps+,
(
"NO" |
"YES" )
attribute options =
"ATTRIB",
ps+,
"DEFAULT",
ps+,
(
"NO" |
"YES" ),
ps+,
"OMITNAME",
(
"NO" |
"YES" ),
ps+,
"VALUE",
ps+,
(
"NO" |
"YES" )
empty element ending rules =
"EMPTYNRM",
ps+,
(
"NO" |
"YES" ),
ps+,
implicit definitions =
"IMPLYDEF",
ps+,
"ATTLIST",
ps+,
(
"NO" |
"YES" ),
ps+,
"DOCTYPE",
ps+,
(
"NO" |
"YES" ),
"ELEMENT",
ps+,
(
"NO" |
"YES" ),
ps+,
"ENTITY",
ps+,
(
"NO" |
"YES" ),
ps+,
"NOTATION",
ps+,
(
"NO" |
"YES" ),
ps+,
link type features =
"LINK",
ps+,
"SIMPLE",
ps+,
(
"NO" |
(
"YES",
ps+,
number ) ),
ps+,
"IMPLICIT",
ps+,
(
"NO" |
"YES" ),
ps+,
"EXPLICIT",
ps+,
(
"NO" |
(
"YES",
ps+,
number ) )
other features =
"OTHER",
ps+,
"CONCUR",
ps+,
(
"NO" |
"YES" ),
ps+,
"SUBDOC",
ps+,
(
"NO" |
"YES" ),
ps+,
"FORMAL",
ps+,
(
"NO" |
"YES" ),
(
urn feature,
keeprsre feature,
validity feature,
entities feature )?
urn feature =
ps+,
"URN",
ps+,
(
"NO" |
"YES" )
keeprsre feature =
ps+,
"KEEPRSRE",
ps+,
(
"YES" |
"NO" )
validity feature =
ps+,
"VALIDITY",
ps+,
(
"NOASSERT" |
"TYPE" |
"TAG" |
"TYPE-TAG" )
entities feature =
ps+,
"ENTITIES",
ps+,
(
"NOASSERT" |
(
"REF",
ps+,
(
"NONE" |
"INTERNAL" |
"ANY ),
ps+,
"INTEGRAL",
ps+,
(
"NO" |
"YES" ) ) )
application-specific information =
"APPINFO",
ps+,
(
"NONE" |
minimum literal )
added requirements =
"SEEALSO",
ps+,
(
"NONE" |
(
ps+,
public identifier )+ )
system declaration =
mdo,
"SYSTEM",
ps+,
minimum literal,
ps+,
document character set,
ps+,
capacity set,
ps+,
feature use,
ps+,
concrete syntax scope,
ps+,
concrete syntaxes supported,
ps+,
validation services,
ps+,
SDIF support,
ps*,
mdc
concrete syntaxes supported =
(
ps+,
concrete syntax,
(
ps+,
concrete syntax changes )? )+
concrete syntax changes =
"CHANGES",
ps+,
(
"SWITCHES" |
(
"DELIMLEN",
ps+,
number,
ps+,
"SEQUENCE",
ps+,
(
"YES" |
"NO" ),
ps+,
"SRCNT",
ps+,
number,
ps+,
"SRLEN",
ps+,
number ) )
validation services =
"VALIDATE",
ps+,
"GENERAL",
ps+,
(
"NO" |
"YES" ),
ps+,
"MODEL",
ps+,
(
"NO" |
"YES" ),
ps+,
"EXCLUDE",
ps+,
(
"NO" |
"YES" ),
ps+,
"CAPACITY",
ps+,
(
"NO" |
"YES" ),
ps+,
"NONSGML",
ps+,
(
"NO" |
"YES" ),
ps+,
"SGML",
ps+,
(
"NO" |
"YES" ),
ps+,
"FORMAL",
ps+,
(
"NO" |
"YES" ),
SDIF support =
"SDIF",
ps+,
"PACK",
ps+,
(
"NO" |
(
"YES",
(
ps+,
"ASN1" )? ) ),
ps+,
"UNPACK",
ps+,
(
"NO" |
(
"YES",
(
ps+,
"ASN1" )? ) )