Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 元素的属性必须存在,并且是dtd文件中定义的列表之一_Xml_Schema_Dtd - Fatal编程技术网

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

Xml 元素的属性必须存在,并且是dtd文件中定义的列表之一,xml,schema,dtd,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 s

在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
 >


它要求所有属性都在那里,但我想强制要求只有一个属性在那里。

在DTD中,属性不能相互依赖。您可以使用
#REQUIRED
#implicated
将任何属性设置为强制性或可选,但不能强制设置必须存在的属性数


一般来说,一个好的设计实践是只使用属性来逐项列出元素的特征,而不改变元素的含义,并保持属性相互独立。如果这些是你的目标,考虑让它们(替代)子元素或者提供你的“宿主”元素的备用版本,这样他们就可以有不同的属性集。此属性不会更改相应元素的含义。。它只是该元素的一个属性。。。有可能通过xsd声明这样的东西吗?@Stephan也不可能使用xsd(除非我忘记了一些技巧)。具有讽刺意味的是,这种限制的一个例子是XML模式本身的模式:xsd元素
只能具有属性
default
fixed
中的一个,但XML模式的模式文件并不强制执行这种限制,它仅在建议的文本中说明。