如何包含同名的多个元素

时间:2011-12-13 10:49:49

标签: xml xsd

我尝试创建一个XML来描述带有多项选项或纯文本的练习。 XML可能如下所示:

<exercise number="1" type="multiChoice">
<question>My very importand question</question>
<answer type="false">yes</answer>
<answer type="true">no</answer>

<exercise number="2" type="text">
    <question>Question 2</question>
    <answer>the right answer</answer>
</exercise>

所以我尝试使用一个序列作为答案,如果我在XML中有多个<answer> - 标签时尝试验证它,那么它就无法工作。

这是架构:

    <xs:complexType name="exerciseType">
    <xs:sequence>
        <xs:element name="question" type="questionType"/>
        <xs:sequence>
            <xs:element name="answer" minOccurs="1">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="type" type="xs:boolean" use="optional"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:sequence>
    <xs:attribute name="number" type="xs:positiveInteger"/>
    <xs:attribute name="type" type="xs:string"/>
</xs:complexType>

任何人都知道我的架构出了什么问题?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试设置maxOccurs属性:

<xs:complexType name="exerciseType">
    <xs:sequence>
        <xs:element name="question" type="questionType"/>
        <xs:element name="answer" maxOccurs="unbounded">
    </xs:sequence>
    <xs:attribute name="number" type="xs:positiveInteger"/>
    <xs:attribute name="type" type="xs:string"/>
</xs:complexType>

免责声明:这是在未经工具验证的情况下编写的,可能包含错误。