XSD:根据属性的值更改内部元素的minOccurs

时间:2013-07-09 12:05:55

标签: xml xsd

我在xsd中有这个元素。

        <xs:element name="OuterElement">
            <xs:complexType>
                <xs:choice maxOccurs="unbounded">
                    <xs:element name="InnerElement">
                        <xs:complexType>
                            <xs:attribute name="name" type="xs:string" />
                            <xs:attribute name="value" type="xs:string" />
                        </xs:complexType>
                    </xs:element>
                </xs:choice>

                <xs:attribute name="enabled" type="xs:boolean" use="required" />
            </xs:complexType>
        </xs:element>

是否可以以下列方式格式化xsd? ...

if enabled==true {
   minOccursOfInnerElement=1
}
else {
   minOccursOfInnerElement=0
}

2 个答案:

答案 0 :(得分:1)

不,不是。 xsd定义标记的结构,属性的值是标记的内容。

你可以做一个选择元素,其中一个成员用于禁用,一个用于启用。

答案 1 :(得分:1)

一个看待它的简单方法是:你有两种父母。启用的父项必须至少有一个内部元素子项,而未启用的父项不需要至少有一个。如果你给它们不同的名字,这个问题是微不足道的,只有当你认为对两个不同的东西使用相同的名称而不是一个简单的验证方法时,它变得很难。