请确认(或反驳)模式定义(.xsd 文件)中的枚举是多余的(由于第二个 simpleType 只允许长度不超过 5 个字符的任何内容通过):
<simpleType name="decision">
<annotation>
<documentation>It will decide the flow</documentation>
</annotation>
<union>
<simpleType>
<restriction base="string">
<enumeration value="yes"/>
<enumeration value="no"/>
<enumeration value="maybe"/>
</restriction>
</simpleType>
<simpleType>
<restriction base="string">
<maxLength value="5"/>
</retriction>
</simpleType>
</union>
<simpleType>
我们的应用程序中有很多这样的东西,所以我们应该优化它。
最佳答案
您看到的是 XSD 作者使用的一种模式,用于为我所谓的“可扩展枚举”提供前向/后向兼容性。
对于某些人来说,这是矛盾的。对我来说,这意味着必须准备执行此契约(Contract)以优雅地处理列出的值以外的值。
契约设计者决定,对于那些特定的类型,不应该有“快速失败”拒绝(通常由 XSD 验证器完成)只是因为一些消费者可能没有围绕枚举值的业务逻辑,而 其他人可能会。
当然,它最终看起来确实是一种“令人困惑”的文档方式……想象一下,虽然 XSD 代码实现如 .NET 的 xsd.exe、svcutil.exe 或 Java JAXB 会非常聪明(它们' re not) 仍然创建一个枚举类型,具有 yes
、no
、maybe
和 other后者是所有其他值的全部。我想知道,假设上述情况,您是否仍然认为这是多余的?代码覆盖专家会喜欢它...
关于xml - XML Schema 中的枚举定义是多余的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270674/