例如,我们经常看到一些短语元素。(下面的代码是一个图像,它不能工作。)
<xs:group name="Phrase">
<xs:sequence>
<xs:element ref="b"/>
<xs:element ref="i"/>
<xs:element ref="span"/>
<xs:element ref="sub"/>
<xs:element ref="sup"/>
<xs:element ref="u"/>
</xs:sequence>
</xs:group>但是,我们不想嵌套<b>。因此,我们将<b>元素定义为:
<xs:group name="b.group">
<xs:sequence>
<xs:element ref="i"/>
<xs:element ref="span"/>
<xs:element ref="sub"/>
<xs:element ref="sup"/>
<xs:element ref="u"/>
</xs:sequence>
</xs:group>是的,<i>元素也是。
<xs:group name="i.group">
<xs:sequence>
<xs:element ref="b"/>
<xs:element ref="span"/>
<xs:element ref="sub"/>
<xs:element ref="sup"/>
<xs:element ref="u"/>
</xs:sequence>
</xs:group><span>、<sub>和<sup>元素可能能够组合短语。
<xs:group name="span.group">
<xs:sequence>
<xs:group ref="Phrase"/>
</xs:sequence>
</xs:group>但同样,我们不想嵌套<u>。
<xs:group name="u.group">
<xs:sequence>
<xs:element ref="b"/>
<xs:element ref="i"/>
<xs:element ref="span"/>
<xs:element ref="sub"/>
<xs:element ref="sup"/>
</xs:sequence>
</xs:group><b>、<i>、<u>的定义在我们看来是多余的,而且可维护性较低。如何在<b>、<i>和<u>上更有意义地使用阶段组
发布于 2016-09-21 16:17:05
如果您不想允许嵌套的b元素,那么限制它不具有b子级是不起作用的-它仍然可以通过中间的i或u元素拥有b孙级元素。使用简单的递归语法(如DTD或XSD 1.0 )没有解决此问题的通用方法,除非通过对每一层嵌套具有不同的类型定义而涉及组合复杂性的方式。最好的方法是使用Schematron或XSD1.1添加断言。流行词汇表中的大多数内容模型都不会尝试限制内联标签的嵌套。
https://stackoverflow.com/questions/39606632
复制相似问题