2011-04-30 25 views
0

我只是在学习编写XML和相关的DTD,而且我想知道是否可以将某些东西合并到!ATTLIST的一行中。我可以在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> 

我怀疑与这两个问题,我有点困惑至于我如何结合这些功能(或者如果我甚至可以) - 所以我真的很感谢有关这样做的一些指导。

+0

不应该'“1”'是'weight'元素的默认值,而不是'unit'属性? – 2011-04-30 03:23:57

+0

是的,它可能应该......这会更有意义,谢谢 - 虽然我看不到如何设置元素的默认值,只是一个属性。它以同样的方式完成吗? – Steve 2011-04-30 05:04:19

回答

1

好吧,我得到它通过执行以下工作,虽然它可能不是“接受的做法”的方式:

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

我不得不出来打破值到它自己的属性(这是有道理的现在我想一想),并删除#IMPLIED,因为我在某处通过设置默认值来读取它的默认值。

希望这会帮助别人(假设它做正确的方式)

干杯

+0

您的浏览器是否在您的文档中呈现'“]>”'字符?你是如何解决这个问题的? – zur4ik 2013-08-03 17:28:14

+0

对不起,我不记得细节 - 这是我在2年前在uni做的事情。从内存中,我不是在浏览器中呈现文档 - 它只是一个XML文件,用于存储我作为作业一部分编写的Java程序的数据。 – Steve 2013-08-05 23:42:59

相关问题