我想在xml中生成这样的输出
<categories>
<bio></bio>
<math></math>
</categories>
所以我尝试使用元素
<xsd:any>
这可能很好。但我怎么能保证个人
<bio>
</bio>
<math>
</math>
是唯一的
<bio></bio><bio></bio>
是不可能的
答案 0 :(得分:1)
我认为您不能在纯XML Schema 1.0中执行此操作 - 该语言允许对元素或属性值进行唯一性检查,但不允许对其名称进行检查。
但是你建议的XML结构并不是特别惯用,如果你有几个元素都用于相同的目的(命名一个类别),那么它们应该具有相同的名称。像
这样的结构<categories>
<category>bio</category>
<category>math</category>
<categories>
会更典型(并且可能更容易处理机器),允许类别名称不是有效的元素名称(例如以数字开头或包含空格),并且可以使用具有唯一性约束:
<xs:element name="categories">
<xs:complexType>
<xs:sequence>
<xs:element name="category" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueCats">
<xs:selector xpath="category"/>
<xs:field xpath="."/>
</xs:unique>
</xs:element>