<option selected>
是否可以在 XSD中指定 HTML 的等价物——确切地说,只有一个元素具有特定属性?
例如,给定以下示例 XML 片段:
<foo-list>
<foo/>
<foo bar="bar"/>
<foo/>
</foo-list>
我可以编写以下 XSD 以确保只有一个foo
具有@bar
:
<xs:element name="foo-list">
<!-- FOO-LIST contains [1..n] FOO elements -->
<xs:complexType>
<xs:sequence>
<xs:element ref="foo" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- any FOO with @BAR must have unique @BAR -->
<xs:unique name="oneFooBar">
<xs:selector xpath="foo"/>
<xs:field xpath="@bar"/>
</xs:unique>
</xs:element>
<xs:element name="foo">
<xs:complexType>
<!-- FOO has optional @BAR -->
<xs:attribute name="bar">
<xs:simpleType>
<!-- @BAR must = "bar", if specified -->
<xs:restriction base="xs:string">
<xs:enumeration value="bar"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
假设一切都合格,并且我决定使用纸牌enumeration
而不是 apattern
是合理的:
1)这个模式是否明智地表示我的意图?(即有零或一和<foo bar="bar"/>
零或多个<foo/>
)<foo-list>
2)有没有办法要求只有一个<foo bar="bar"/>
?