为什么有一个无效的XSD可能会很糟糕?

时间:2014-10-13 20:00:52

标签: xml xsd javax.xml

我的项目中有一组XSD文件。我尝试使用此问题中的代码验证它们:

Validating XSD itself

事实证明,我的某些XSD文件无效。

这并不妨碍我使用这个无效的XSD文件验证某些XML。那么哪种情况真的很重要?

2 个答案:

答案 0 :(得分:2)

除了John的回答,如果您使用XML Schema来定义可互操作的协议,您可能不仅需要验证模式,还需要

  • 使用多种工具来做 - 不仅仅是Xerces,还有OxygenXML和
  • 尝试使用JAXB/XJC或Microsoft xsd等标准工具编译此架构。

在我的实践中,我遇到了国际标准化组织发布的模式完全无效的情况。因为它们只在某个工具中验证过(我不会在这里命名)。我看到了许多技术上有效的模式,但是XJC会产生很大的问题,这些问题通常用于Web服务。

如果您只是出于自己的目的编写XML Schema并私下使用它,那么,最初没有人关心它是否有效。

但不要忘记,您可能无法控制您的发展的未来。今天的内部脏原型可能是明天销售的产品。

答案 1 :(得分:0)

如果您的XSD无效,那么您无法确信架构处理器会按您的意图解释它。毕竟,当你喂它乱码时,怎么知道你的意思?

如果只有一点点胡言乱语,那么你所选择的处理器可能会成功验证你想要的一些甚至所有输入,但这是运气问题。其他模式处理器可能会以不同方式进行验证 - 即使是相同处理器的不同版本也可以。

如果您正在努力解决这个问题,那么您应该问问自己,为什么您的应用程序首先要对XSD验证XML感到困扰。如果您没有验证,那么您的应用程序可以容忍哪种类型的预期XML表单的变体?你能否确定每个未来版本在这方面都是一样的?