XML 是 SGML 的子集。有效的 XML 文档也是有效的 SGML 文档,但反之亦然。
即使我使用 XML 模式而不是 DTD,这是否仍然成立?
怀疑源于这样一个事实,即 XML DTD 是 SGML DTD 的一个子集,但是 XML Schema 允许在 XML DTD 中无法定义的东西。
那么 XML Schema 仍然是一个子集吗?我可以用 SGML DTD 做我用 XML Schema 做的所有事情吗?
XML Schema 是 SGML DTD 的子集吗?
不,XML Schema 远不是 DTD 的子集。XML Schema 使用与 DTD 完全不同的语法,并且 XML Schema 可以表达许多 DTD 无法实现的约束。
有效的 XML 文档也是有效的 SGML 文档
您可能的意思是well-formed, not valid。 格式良好不等于有效。 这可能是您要进行子集声明的地方。XML 被设计为 SGML 的子集,是的。
我可以用 SGML DTD 做我用 XML Schema 做的所有事情吗?
不,甚至没有接近。仅举一个例子,DTD 不能将数据限制为数字类型,但 XML Schema 可以很简单。XML Schema 通常比 DTD 更具表现力。