我可以结合使用!ATTLIST功能在一行DTD中吗?

时间:2011-04-30 00:42:42

标签: xml dtd

我正在学习编写XML和相关的DTD,我想知道我是否可以将某些内容组合在一起!ATTLIST。

例如:

我有一个元素weight,我希望(kg|lb)作为选项,但将"kg"设置为默认值。这些都不是必需的,因此状态为#IMPLIED,但我也希望默认权重为“1”。

我可以合法地把所有这些放在一行:

<!ELEMENT weight (#PCDATA)>
<!ATTLIST weight unit CDATA "1" (kg|lb) "kg" #IMPLIED>

或者我可以这样做:

<!ELEMENT weight (#PCDATA)>
<!ATTLIST weight unit CDATA>
<!ATTLIST weight unit "1" #IMPLIED>
<!ATTLIST weight unit (kg|lb)>
<!ATTLIST weight unit "kg" #IMPLIED>

我怀疑两者都存在问题,而且我对如何将这些功能结合起来感到有些困惑(或者我甚至可以) - 所以我真的很感激这方面做了一些指导。

1 个答案:

答案 0 :(得分:1)

好的,我通过以下方式开展工作,虽然它可能不是“公认的做法”方式:

<!ELEMENT weight (#PCDATA)>
<!ATTLIST weight qty  CDATA "1">
<!ATTLIST weight unit CDATA (kg|lb) "kg">

我不得不将值分解为它自己的属性(现在我考虑它是有意义的),并删除#IMPLIED,因为我通过设置默认值来读取某处,无论如何它隐含了。

希望这会对其他人有所帮助(假设有正确的方法)

干杯