当声明DTD元素类型时,“ - O”是什么意思?

时间:2011-11-01 02:10:31

标签: xml dtd sgml

根据W3C XML规范,元素以以下形式声明:

[45]    elementdecl    ::=      '<!ELEMENT' S Name S contentspec S? '>'
[46]    contentspec    ::=      'EMPTY' | 'ANY' | Mixed | children

w3school上的示例是:

 <!ELEMENT br EMPTY>

但在html 4.01 strict dtd元素br中是:

<!ELEMENT BR - O EMPTY                 -- forced line break -->

为什么第二个声明添加“ - O”?这是什么意思?我在哪里可以找到关于此的官方文件?

2 个答案:

答案 0 :(得分:3)

连字符表示必需,O表示可选。因此“ - O”表示需要开始标记,结束标记是可选的。您可以在§3.3.3

中阅读更多内容

答案 1 :(得分:2)

像@erickson所说,连字符表示“必需”,“O”表示可选。第一个 - / O用于开始标记,第二个用于结束标记。这称为标签最小化。

只允许在SGML DTD中使用标记最小化。 这就是您在HTML Strict DTD中看到它的原因,但是您没有在XML规范中看到它或w3schools上的XML示例。