xml - XML Schema 中的枚举定义是多余的

标签 xml xsd

请确认(或反驳)模式定义(.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) 仍然创建一个枚举类型,具有 yesnomaybeother后者是所有其他值的全部。我想知道,假设上述情况,您是否仍然认为这是多余的?代码覆盖专家会喜欢它...

关于xml - XML Schema 中的枚举定义是多余的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270674/

相关文章:

c# - LINQ 到 XML : applying an XPath

java - 为什么在 android 中将 Width 和 Height 设置为 wrap_content 后,我​​的 EditText 会水平或垂直扩展?

java - XML 架构以无序模式显示元素

xml - 是 xmlns :xsi ="http://www.w3.org/2001/XMLSchema-instance" a special case in XML?

xsd - 将字节数组表示为 XSD 架构

python - xml.etree.ElementTree.ParseError -- 异常处理未捕获错误

java - PreferenceFragment 在 Fragment 布局上重叠

c# - 使用 XElement 追加 XML

XML 架构错误 "Element not allowed for content model"

xml - XSD 独特的元素和属性