XML Schema是SGML DTD的子集吗?
XML Schema并不是SGML DTD的子集。XML Schema使用完全不同的语法,并且XML Schema可以表达DTD无法表达的许多约束。
一个有效的XML文档也是一个有效的SGML文档。您可能指的是“格式良好”,而不是“有效”。这里可能是您想要提出一个子集的陈述。是的,XML被设计为SGML的子集。
我可以用SGML DTD做到XML Schema能做的一切吗?不,差得远。举一个例子,DTD无法将数据限制为数字类型,但XML Schema可以轻松实现。XML Schema比DTD更具表现力。
一个有效的XML文档(使用DTD)如何不是一个有效的SGML文档?要么您误解了我的回答,要么您仍然没有注意区分有效和格式良好。无论哪种方式,XML作为SGML的子集并不意味着XML Schema是SGML DTD的子集。了解有效和格式良好的区别将极大地帮助您理解这里的问题。
我理解了有效和格式良好的区别。我将尝试转变问题。XML DTD是否有SGML DTD没有的“命令”?现在您提出了一个完全不同的问题(与您关于XML Schema的其他查询线路不明确相关)请参阅《SGML和XML的比较》以了解SGML和XML之间的区别。
您是否意识到在XML推荐中定义的DTD与XML模式(也称为XSD)不同?我知道它们是不同的。也许这篇文章可以帮助解释我的意思。它说“因为XML只是SGML的一个子集,所以SGML解析器能够读取和解码有效的XML文件。反之则不一定成立,因为SGML文件可能具有XML解析器不理解的功能。”
是的,那是真的,我希望我提供的背景足以使您理解您引用的陈述与您在标题中提出的问题之间的区别。祝好运。
我想我没有解释清楚。我理解XML模式不是SGML DTD的子集。现在我问的是不同的。假设XML模式不存在,我们暂时忘记它。如果我编写了一个格式良好的XML文档,并符合XML DTD,那么它作为SGML文档是否有效?
是的。“可扩展标记语言(XML)是SGML的子集...”实际上是W3C XML推荐的开头。