这两个陈述在DTD中有何不同 -
<!ATTLIST element-name attribute-name (value) #IMPLIED>
&
<!ATTLIST element-name attribute-name #FIXED value)
我尝试了以下两个例子,两者的工作方式相同 -
示例1:
<?xml version ='1.0' encoding = 'UTF-8'?>
<!DOCTYPE ContactBook[
<!ELEMENT ContactBook (Contact, Contact)>
<!ELEMENT Contact (Name, Phone)>
<!ELEMENT Name (#PCDATA|text)* >
<!ELEMENT text (#PCDATA) >
<!ELEMENT Phone (#PCDATA) >
<!ATTLIST Phone type (Mobile) #IMPLIED>
]>
<ContactBook>
<Contact>
<Name><text>ABC</text></Name>
<Phone>123</Phone>
</Contact>
<Contact>
<Name>DEF<![CDATA[junk!]]></Name>
<Phone type='Mobile'>456</Phone>
</Contact>
</ContactBook>
示例2:
<?xml version ='1.0' encoding = 'UTF-8'?>
<!DOCTYPE ContactBook[
<!ELEMENT ContactBook (Contact, Contact)>
<!ELEMENT Contact (Name, Phone)>
<!ELEMENT Name (#PCDATA|text)* >
<!ELEMENT text (#PCDATA) >
<!ELEMENT Phone (#PCDATA) >
<!ATTLIST Phone type CDATA #FIXED "Mobile">
]>
<ContactBook>
<Contact>
<Name><text>ABC</text></Name>
<Phone>123</Phone>
</Contact>
<Contact>
<Name>DEF<![CDATA[junk!]]></Name>
<Phone type='Mobile'>456</Phone>
</Contact>
</ContactBook>
答案 0 :(得分:0)
据我所知,区别在于省略属性。在这两种情况下,您都可以这样做,但在#IMPLIED
中它不会获得任何内容,因此处理它的应用程序可以选择一个,如果有的话。在#FIXED
中,该属性将始终获得DTD
中定义的值。