【发布时间】:2011-09-08 09:32:26
【问题描述】:
我正在寻找描述一类实例的 XSD。我将通过一个实例来解释我想要完成的工作。我想要一个 XSD 类型(我们称之为 FormBaseType)来描述这个实例:
<form method="post" action="someaction" name="acme">
<input name="EXACTLY FOO" value="EXACT ENUMERATION" type="CONST STRING" />
<input name="SOME RANDOM STRING" value="SOME RANDOM STRING" type="CONST STRING" />
<input name="SOME RANDOM STRING" value="SOME RANDOM STRING" type="CONST STRING" />
... (input element repeats up to 30 times) ...
</form>
我希望 OneKindOfMyFormType 继承和限制 FormBaseType 以便它只匹配这样的实例:
<form method="post" action="someaction" name="acme">
<input name="EXACTLY FOO" value="EXACT ENUMERATION" type="CONST STRING" />
<input name="EXACTLY BAR" value="SOME RANDOM STRING RESTRICTION" type="CONST STRING" />
<input name="EXACTLY BAZ" value="SOME OTHER RANDOM STRING RESTRICTION" type="CONST STRING" />
... (input element repeats up to 30 times) ...
</form>
我在尝试定义以不同方式限制的多个输入元素时遇到了问题。我可以有多个相同类型的输入元素,如下所示:
<xs:complexType name="FormBaseType">
<xs:sequence>
<xs:element name="input" type="ns0:InputType" minOccurs="1" maxOccurs="33"/>
</xs:sequence>
</xs:complexType>
但是当我尝试这个时:
<xs:complexType name="RequestType">
<xs:complexContent>
<xs:restriction base="RequestTypeBase">
<xs:sequence>
<xs:element name="input" type ="ns0:AlphaNumericInputType" minOccurs="1" maxOccurs="1" />
<xs:element name="input" type ="ns0:NumericInputType" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
存在相同名称(“输入”)且在相同范围内的元素必须具有相同类型的问题。 (AlphaNumericInputType 和 NumericInputType 是 InputType 的限制,但除了可能澄清我的意图之外,这对于示例并不重要)。
长话短说,我想对多种表单进行 XSD 描述,其中一些 input 元素在各种表单(基础)以及派生的 XSD 类型中都是相同的 input 元素具有基本属性 type 加上一个确切的 name 属性值,并且对于该确切名称,一个 value 属性类型限制。
这可能吗?怎么样?
TIA
【问题讨论】:
标签: inheritance xsd