我有xml文件:
<Parent>
<Child1 ... />
<Child2 ... />
...
<Child1 ... />
<Child1 ... />
<Parent>
其中Clild1和Child2 - Parent抽象类的子项。
也就是说,问题是: 如何为可以包含任意数量元素的集合设置验证方案?
祝你好运!
答案 0 :(得分:1)
<xs:element name="Parent">
<xsl:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Child1"/>
<xs:element name="Child2"/>
</xs:choice>
</xs:complexType>
</xs:element>
为了说明这是如何工作的,让我们使用示例输入的简化版本。
<Parent>
<Child1 ... />
<Child2 ... />
<Child1 ... />
<Child1 ... />
</Parent>
<Parent>
是第一个验证的元素。<Child1>
。由于<Child1>
是choice
块中的第一个元素,因此会验证。<Child2>
元素。由于<Child2>
是下一个,它也会验证。</Parent>
,因此验证器会对choice
块进行检查,因为它可以无限次地发生maxOccurs=unbounded
。<Child1>
元素。<Child2>
元素,以便它完成choice
块。</Parent>
,因此验证器会对choice
块进行检查,因为它可以无限次地发生maxOccurs=unbounded
。<Child1>
元素。</Parent>
验证。自minOccurs=0
起,这也允许出现0
或<Child1>
元素<Child2>
的情况。除非显式声明,否则XML模式元素将继承其父元素的属性。在这种情况下,由于我们没有为<Child1>
或<Child2>
声明minOccurs属性,因此它等同于<xs:element minOccurs="0" name="Child1"/>
和<xs:element minOccurs="0" name="Child2"/>
。