#FIXED value VS(value)#在DTD中隐含

  • 本文关键字:value DTD VS #FIXED xml dtd
  • 更新时间 :
  • 英文 :


这两个语句在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>

据我所知,区别在于省略了属性。在这两种情况下,您都可以这样做,但在#IMPLIED中,它不会得到任何结果,因此处理它的应用程序可以选择一个(如果有的话)。而在#FIXED中,属性将始终获得在DTD中定义的值。

最新更新