这个问题等同于:“使用SGML与XML,以及XML与SGML的优缺点分别是什么?”我已经了解了SGML和XML之间的一些相似点和不同点,但它们没有回答这个问题。
相似点
- SGML和XML都允许我们描述文档(结构、数据、元数据);
- 两者将外观(颜色等)与数据/结构/元数据分开;
- SGML和XML都可以在Web页面中使用/在Web中使用(即使XML比SGML更专门用于Web)
- SGML和XML文档必须包含DTD才能“VALID”
- SGML提供了多种编写方式(例如:我们可以编写空标签和非闭合标签,我们可以编写
<foo>d</>
等) - SGML文档可能很难编写
- 因此,SGML文档的解析可能非常低和复杂
- XML是SGML的一个子集,更容易学习、使用
- 与SGML不同,XML不允许以几种方式编写(例如:不允许空标签和非闭合标签)
- 因此,XML的解析比SGML更简单、更快
- SGML文档没有“WELL FORMED”状态,XML文档有(如果语法正确)
- SGML文档必须包含DTD,而XML文档不必。
SGML/XML的优缺点是什么?(即:何时使用其中一个而不使用另一个?)?
<foo></foo/>
或者<foo/>
或者<foo />
。或者<element att='value'/>
以及<element att="value"/>
,这只是两个例子,XML允许使用不同的表示法来表达相同的语义。至于第七点,一个XML文档要有效,必须遵守DTD或模式,参见https://www.w3.org/TR/xml/#dt-valid,其中说到“如果XML文档具有关联的文档类型声明,并且文档符合其中所表达的约束条件,则该XML文档是有效的”。 - Martin Honnensudo apt-get install opensp
安装,在Mac/MacPorts上使用sudo port install opensp
安装;不过我不知道MacBrew的等效方法);我正在使用自己的sgmljs SGML系统(即将发布)。 - imhotap