为什么对 XML 同时使用 XSD 和 DTD?

Why use both XSD and DTD for XML?

Whosebug 有几个很好的问题 contrasting XSD and DTD and choosing between XSD and DTD。但是我遇到了一种同时使用 XSD 和 DTD 的数据格式和库。 XML 文档指定了 DTD,但支持库需要 XSD 进行编码和解码。

同时使用 XSD 和 DTD 有什么好处?

我看到 DTD 和 XSD 一起使用的最重要的时间与您引用的示例有关:一个行业标准小组很久以前就使用 DTD 定义了他们的 XML 词汇和语法,但是 XML 的特定消费者想要使用需要 XSD 的工具,例如 JAXB。因此,消费者使用 XSD 创建了一个并行模式,以便能够利用工具或满足其他需要 XSD 的依赖项,同时保持与通过先前建立的 DTD 指定的模式的兼容性。

除了解决此类遗留问题外,请不要为 DTD 而烦恼。新项目应该只使用更现代的 XML 模式语言,例如 XSD、RELAX NG 或 Schematron。