我正在尝试开发XML架构。这是一个调查,示例XML可能如下所示。
<survey>
<instructions>Please complete the survey.</instructions>
<section>
<sectionHeader>Multiple Choice: Select the most appropriate answer.</sectionHeader>
<item>
<question>What is your favorite color?</question>
<answer>
<option>red</option>
<option>yellow</option>
<option>blue</option>
</answer>
</item>
<item>
<question>What is your favorite shape?</question>
<answer>
<option>circle</option>
<option>square</option>
<option>triangle</option>
</answer>
</item>
</section>
<section>
<sectionHeader>Free Response: Type a Response</sectionHeader>
<item>
<question>Who is your idol and why?</question>
<answer>
<textbox>Type your answer here.</textbox>
</answer>
</item>
<section>
</survey>
基本上,答案可以包含一个或多个选项,也可以包含一个文本框。此外,调查必须包含一个或多个部分,每个部分可以包含一个或多个项目。我目前有以下xml架构。
<xs:element name="survey">
<xs:complexType>
<xs:element name="instructions" type="xs:string"/>
<xs:element name="section">
<xs:complexType>
<xs:element name="sectionHeader" type="xs:string"/>
<xs:element name="item"/>
<xs:complexType>
<xs:element name="question" type="xs:string"/>
<xs:element name="answer">
?? Choice between multiple options or one text box ??
</xs:element>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
然而,这仅允许一个部分和一个项目。我想让它按顺序允许这些标签中的一个或多个。此外,我希望答案标记包含一个或多个选项或单个文本框。我怎么能这样做?
答案 0 :(得分:1)
你的xs:element粒子组应该在xs:choice或xs:sequence中分组,你可以在xs:element或xs:choice / xs:sequence上指定minOccurs和maxOccurs。因此,如果您想要序列(部分,项目,部分,项目......)使用
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="section"/>
<xs:element name="item"/>
</xs:sequence>