我有格式良好的 HTML 文件。要将它们转换为 SGML,我只是切换扩展名还是还有更多工作要做?
4 回答
这将取决于 HTML 的版本。来自SGML:
虽然 HTML 是部分独立开发并与 SGML 并行开发的,但其创建者 Tim Berners-Lee 打算将其作为 SGML 的应用程序。HTML(超文本标记语言)的设计因此受到 SGML 标记的启发,但是由于没有建立明确的扩展和解析指南,大多数实际的 HTML 文档都不是有效的 SGML 文档。后来,HTML 被重新制定(2.0 版)更多地成为 SGML 应用程序,然而,HTML 标记语言具有许多与 SGML 要求不同的遗留和异常处理功能。HTML 4 是一个完全符合 ISO 8879 – SGML 的 SGML 应用程序。
最近恢复的万维网联盟 HTML 工作组的章程说,“该组不会假设 SGML 解析器用于'经典 HTML'”。尽管 HTML 语法与默认参考具体语法的 SGML 语法非常相似,但 HTML5 放弃了将 HTML 定义为 SGML 应用程序的任何尝试,明确定义了自己的解析规则,更接近于现有的实现和文档。(但是,它确实定义了一个替代的基于 XML 的 XHTML 序列化,它确实符合 SGML (WWW)。)
因此,如果您拥有格式良好的 HTML 4 或 XHTML,您可能已经拥有 SGML。任何更早(不太可能)或更晚(HTML 5)的内容,您可能必须对文档本身进行一些更改。
验证的 HTML 文档是 SGML 文档。这是否有任何实际影响是一个不同的问题,但可以使用通用 SGML 工具(仍然存在)处理这样的文档。
然而,作为 SGML,有效性不是必需的。而SGML 文档根本不需要文档类型声明。但如果确实如此并且如果它验证,那么这证明它确实是 SGML(而不仅仅是类似 SGML),因为 SGML 验证器除了检查与 DTD 的一致性之外,还检查基本语法。
在 SGML 或基于 SGML 的 HTML 中没有格式良好的概念,但 XML 格式良好的概念只是意味着文档首先是 XML(而不仅仅是类似 XML),即使用 XML 的一般语法正确。
更改扩展名就足够了,但实际上您无需做任何事情即可从 HTML 获得 SGML,因为 HTML 完全基于 SGML,所以当您拥有 HTML 时,您已经拥有 SGML。
SGML 是标记之母。XML 也是基于 SGML。所以当你有一些 XML 时,你会自动拥有 SGML。XHTML 是基于 XML 的,所以当你有 XHTML 时,你就有了 XML 和 SGML。
只要您的 HTML 验证到 SGML HTML DTD 之一,您就已经拥有 SGML。
与其他答案相反,XML/XHTML 不是有效的 SGML。
同样对于 SGML,实际上并没有“格式良好的”SGML 这样的东西,只有有效的(对于 DTD)SGML。