我的项目中有一组 XSD 文件。我尝试使用此问题中建议的代码来验证它们:
事实证明,我的一些 XSD 文件无效。
这并不妨碍我用这个无效的 XSD 文件验证一些 XML。那么在哪些情况下真正重要呢?
除了 John 的回答之外,如果您使用 XML Schemas 来定义一个可互操作的协议,您可能不仅想要验证架构,还想要
在我的实践中,我遇到过国际标准化组织发布的架构根本无效的案例。因为它们只在某个工具中得到验证(我不会在这里命名)。我看到很多模式在技术上是有效的,但会导致 XJC 出现巨大问题,XJC 通常用于 Web 服务。
如果您只是出于自己的目的编写 XML Schema 并私下使用它,那么最初没有人关心它是否有效。
但不要忘记,您可能无法控制自己的未来发展。今天的内部脏原型可能是明天销售的产品。
如果您的 XSD 无效,那么您无法确信模式处理器会按照您的意图解释它。毕竟,当你喂它胡言乱语时,它怎么会知道你的意思呢?
如果只有一点点乱码,那么您选择的处理器可能会成功验证您想要的部分甚至全部输入,但这是运气问题。其他模式处理器的验证方式可能不同——甚至同一处理器的不同版本也可能这样做。
如果您为此苦苦挣扎,那么您应该问自己,为什么您的应用程序首先要针对 XSD 验证 XML。如果您不进行验证,那么您的应用程序可以容忍预期 XML 表单的哪些变化?你能确定每个未来的版本在这方面都是一样的吗?