DTD 是不是已弃用?

Posted

技术标签:

【中文标题】DTD 是不是已弃用?【英文标题】:Is DTD deprecated?DTD 是否已弃用? 【发布时间】:2017-08-11 03:29:36 【问题描述】:

在What is difference between XML Schema and DTD? 中,两个回答者声明 DTD“已被弃用”。其中一位用户 vtd-xml-author 指出

DTD 几乎已被弃用,因为它的用处有限 [...]

用户 Jesse Chisholm cmets

已弃用?不。 [XDR 已弃用] 过时了?也许[...]

在What is DTD exactly?,用户AlexR cmets 回答如下:

请注意,DTD 已被弃用,取而代之的是更具声明性和功能更强大的 XSD。

在这种情况下,没有人会不同意。

那么 DTD 是否已弃用?这肯定是事实,而不是意见。大概是 W3C 或其他一些标准机构有权确定 DTD 是否实际上已被弃用。当然,在给定的上下文(例如,特定的软件系统)中使用 DTD 可能会被弃用,而 DTD 本身不会在该(或任何)上下文之外被弃用。

【问题讨论】:

【参考方案1】:

DTD 并未被正式弃用,但现在有比 DTD 更好的选择来指定 XML 词汇和语法。

通俗地说,deprecated 通常用于指代不再受鼓励的旧方式。从这种意义上说,有人可能会说 DTD 已被弃用。 XSD 比 DTD 更具表现力。 (RELAX NG 和 Schematron 也是更好的选择。)此外,XSD 的采用早已超过了 DTD,因为它在许多领域指定 XML 词汇表和语法。

然而,从技术上讲,已弃用通常应用于由负责方对其控制下的标准、API、库或其他工件的官方行为。 W3C 从未声明过不推荐使用 DTD,因此说不推荐使用 DTD 从技术上讲是不正确的。

除了语义,为您开始的任何新的 XML 词汇和语法工作选择 XSD(或 RELAX NG 或 Schematron)。在这个时候,不必正式弃用 DTD 就成为一个糟糕的选择。

【讨论】:

以上是关于DTD 是不是已弃用?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:参数数组是不是已弃用?

PayPal ExpressCheckout 是不是已弃用?

gluTess* 函数是不是已弃用?

PythonQt 是不是已弃用?

.NET Core 中是不是已弃用 ApiController

window.requestFileSystem 方法是不是已弃用?