如何确保xml中complextype下的一些必需元素和一些可选元素?

如何确保xml中complextype下的一些必需元素和一些可选元素?,xml,xsd,Xml,Xsd,我在创建一个复杂的元素时遇到了问题,它既允许可选元素,也允许强制元素。 对于下面的xml,假设h2是必需的,而h1是可选的,顺序无关紧要 案例1: <root> <h1/> <h2/> </root> 案例2: <root> <h2/> </root> 案例3: <root> <h2/> <h1/> </root> XSD: 上述第三种情况在这

我在创建一个复杂的元素时遇到了问题,它既允许可选元素,也允许强制元素。 对于下面的xml,假设h2是必需的,而h1是可选的,顺序无关紧要

案例1:

<root>
<h1/>
<h2/>
</root>

案例2:

<root>
<h2/>
</root>

案例3:

<root>
<h2/>
<h1/>
</root>

XSD:


上述第三种情况在这个xsd中失败,但这种情况是有效的。
我需要一个xsd,这是有效的所有上述情况

知道你想要的是:

使h2在大气1中出现,而h1在大气1中出现的次数最多 可能的

您可以使用这个XSD,在这个XSD中定义,如果XML的内容类似于(RegExpr)
**
,则XML是有效的

XSD:



有效的XML示例:
(一)


(二)



无效的XML示例:
两个
元素

<root>
  <h2/>
  <h1/>
  <h2/>
</root>

没有
元素

<root>
  <h1/>
  <h1/>
</root>


您能告诉我
是否应该有效吗?谢谢,但您不能在一个元素中定义两次同名的元素。此定义不正确。在给定的内容模型中定义两个同名元素可能容易出错,因为它受许多规则的约束,但并不违法。答案中给出的模式(现在的情况)对我来说是合法的,我尝试过的验证器(Xerces J和Saxon EE)也接受了它。
<root>
  <h1/>
  <h1/>
  <h2/>
  <h1/>
</root>
<root>
  <h1/>
  <h2/>
</root>
<root>
  <h2/>
  <h1/>
  <h2/>
</root>
<root>
  <h1/>
  <h1/>
</root>