代码之家  ›  专栏  ›  技术社区  ›  Aviad P.

约束一个固定属性,使它只能出现在一个元素上

xsd
  •  1
  • Aviad P.  · 技术社区  · 14 年前

    这里有一个例子

    <Object>
        <Element>Value1</Element>
        <Element>Value2</Element>
        <Element Default="true">Value3</Element>
        <Element>Value4</Element>
        <Element>Value5</Element>
    </Object>
    

    我想限制 Default Element .

    下面是上面的XSD模式:

    <xs:element name="Object">
        <xs:complexType>
            <xs:element name="Element" maxOccurs="unbounded">
                <xs:simpleContent>
                    <xs:extension base="xs:string">
                        <xs:attribute name="Default" fixed="true"/>
                    </xs:extension>
                </xs:simpleContent>
            </xs:element>
        </xs:complexType>
    </xs:element>
    

    xs:unique , xs:selector xs:field ,但没有达到有意义的结果,不确定这是否是正确的方法。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Rookie Programmer Aravind    14 年前

    我尽力为你设计了一个xsd。实现需求的可能方法是定义元素 element “试图使XSD不明确”

    我建议定义不同的元素名。

    示例::定义 DefElement 具有属性且无边界 Element

        2
  •  1
  •   Community CDub    8 年前

    老问题,但看看这里: XSD Specifying an attribute that can be used only once in the XML

    有一个封闭的解决方案(但不完整):将属性定义为一个值布尔值(仅为true)、可选、无默认值和唯一。

    -请检查是否只有一个默认值“true” -请检查是否只定义了一个默认属性

    -不要检查是否至少定义了一个默认属性