元素的属性必须存在,并且是dtd文件中的已定义列表之一

时间:2011-12-19 19:48:21

标签: xml schema dtd

在DTD文件中,如何声明元素必须具有属性。 此属性必须是以下三个之一:si,sl或ii

<bla si="foo">
<bla ii="foo">
<bla sl="foo">

有效,并且:

<bla> or
<bla somthing="foo"> or
<bla si="foo" ii="bar">

一切都无效

提前致谢

编辑:

这不是诀窍,但它很接近:

<!ATTLIST bla si CDATA #REQUIRED
                sl CDATA #REQUIRED
                ii CDATA #REQUIRED
 >

它需要所有属性,但我想强制,只有一个属性存在。

1 个答案:

答案 0 :(得分:4)

在DTD中,属性不能相互依赖。您可以使用#REQUIRED#IMPLIED使任何属性成为必需属性或可选属性,但不能以其他方式强制必须存在的属性数。

通常,一个好的设计实践是仅使用属性来逐项列出元素的特征,而不是改变元素的含义,并保持属性彼此独立。如果这些是您的目标,请考虑制作(替代)子元素或提供“host”元素的替代版本,以便它们可以具有不同的属性集。