我是XSD的新手,需要按顺序定义需要不带文字的单个元素(如第一个<value>
)的方案。
<enum type="state">
<value></value>
<value>state_update</value>
<value>normal</value>
<value>defective</value>
<value>alarm</value>
<value>unknown</value>
</enum>
答案 0 :(得分:1)
在XSD中,所有具有相同名称的同级元素必须具有相同的类型,因此您无法为第一个值子元素定义不同的类型(即不同的验证规则)。
唯一可以做到这一点的方法是使用XSD 1.1断言;你可以在枚举元素的定义中说明,例如
<assert test="value[1] = ''/>
或
<assert test="count(value[.='']) = 1"/>
XSD 1.1目前在Xerces,Saxon和Altova中实施。