0

我在 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
}
4

2 回答 2

1

一种简单的看待它的方法是:你有两种父母。启用的父母需要至少有一个内部元素孩子,而未启用的父母不需要至少有一个。如果你给它们起不同的名字,问题就变得微不足道了,而且只有当你决定对两个不同的事物使用相同的名字比使用简单的验证方法更重要时,它才会变得很困难。

于 2013-07-09T17:27:54.573 回答
1

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

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

于 2013-07-09T12:16:50.200 回答