我需要在我的XSD架构中定义以下情况。这是我的XML的一个例子:
<initialization>
<stat name="SelfActualization" range="" init="" tickValue="" colorR="" colorG="" colorB=""/>
<stat name="Social" range="" init="" tickValue="" colorR="" colorG="" colorB=""/>
<staticAction name="Study" >
<SelfActualization reqPoints="0" gainedPoints="0" />
<Social reqPoints="0" gainedPoints="0" />
</staticAction>
</initialization>
我可以定义尽可能多的&#34; stat&#34;我想要的元素(在这种情况下只有2),我已经设法获得这种行为。我不知道该怎么做的是:在我的任何一个静态行动&#34;我需要所有的&#34;统计数据&#34;先前在上面定义的(再次命名)(作为元素),并且以相同的顺序在开头定义它们。 正如我们在示例中所看到的那样,确实都是&#34; SelfActualization&#34;和#34;社交&#34;在那里,并以正确的顺序。如果是另一个&#34; stat&#34;以前没有定义,或者如果其中一个&#34;统计数据&#34;如果缺少定义,或者如果顺序错误,则必须拒绝XML。提前谢谢..
答案 0 :(得分:2)
如果我理解正确,那么在初始化元素的声明中,添加断言
<xs:assert test="every $sa in staticAction
satisfies deep-equal(stat/@name,
$sa/child::*/local-name())"/>