【问题标题】:XML Schema - Element with maxOccurs="unbounded" containing multiple acceptable typesXML Schema - maxOccurs="unbounded" 的元素包含多种可接受的类型
【发布时间】:2014-07-05 22:14:44
【问题描述】:

是否可以为 maxOccurs="unbounded" 的元素创建 XSD 架构,该元素接受不同的值类型作为其项目?例如:

<myArray>
    <A>first</A>
    <A>second</A>
    <A>third</A>
    <B>fourth</B>
    <B>fifth</B>
</myArray>

如果不是,它是不是设计 XML 结构的非标准类型?

在 XHTML 中类似:

<body>
    <p></p>
    <br />
    <img />
</body>

这是否意味着 xhtml 不标准?

更新: maxOccurs="unbounded" 以前称为“数组元素”

【问题讨论】:

    标签: xml xsd uml


    【解决方案1】:

    XSD 不会将任何类别的元素标识为“数组元素”,因此您的问题的含义并不完全清楚。 XSD 中不要求一个元素的所有子元素具有相同的名称或相同的类型。

    XSD 确实要求,通过“元素声明一致”约束,任何两个具有相同名称的同级具有相同的类型(或兼容的类型,具有由一些相当密集和复杂的散文定义的“兼容性”)。

    由于异构数组在某些编程语言中造成困难,我可以想象一些程序员希望设计他们的 XML 以避免映射到异构数组的结构。但 XHTML 的设计绝不是非标准的。

    【讨论】:

    • 通过“数组元素”,我指向一个 maxOccur="unbound" 的元素。我还用真实的话更新了问题。
    • 那么我的示例的架构如何?你的意思是这不可能吗?
    【解决方案2】:

    好吧,我通过使用 xsd refs 找到了方法。 结论:有可能,XHTML 是标准的。

    “myArray”的架构:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="A" type="xs:string" />
        <xs:element name="B" type="xs:string" />
        <xs:element name="myArray">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="A" minOccurs="0" maxOccurs="unbounded" />
                    <xs:element ref="B" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多