【问题标题】:XSD for element whose type depends on an attribute value?类型取决于属性值的元素的 XSD?
【发布时间】:2016-11-16 11:57:04
【问题描述】:

我正在尝试为以下 XML 文件创建 XSD:

<config xmlns="tbd">
    <root>C:\workspace\</root>
    <zone type="directories" delay="30000">
        <directory>output</directory>
        <directory>input</directory>
        <directory>errors</directory>
    </zone>
    <zone type="database" delay="50000">
        <table name="OUTPUT_VIEW">
            <column>ID</column>
            <column>TYPE</column>
            <column>SUB_TYPE</column>
            <column>COUNT(*)</column>
            <column>SUM(BASE_AMOUNT)</column>
        </table>
    </zone>
</config>

我在为此创建 XSD 时遇到问题,因为根据 XML 文件,zone 元素可以有两种类型。

【问题讨论】:

    标签: xml xsd jaxb schema


    【解决方案1】:

    XSD 1.0

    您不能让内容模型因 XSD 1.0 中的属性值而异。如果您可以重新设计 XML,则考虑将 zone 拆分为两个不同的元素,directoriesdatabase。如果您无法重新设计 XML,那么您可以合并单独的内容模型,并使两个模型不共享的所有元素都是可选的;您将失去执行某些必要性要求的能力,但至少您将能够涵盖这两种情况。

    XSD 1.1

    这正是Conditional Type Assignment 的设计目的。示例见How to make type depend on attribute value using Conditional Type Assignment

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多