【问题标题】:#FIXED value VS (value) #IMPLIED in DTD#FIXED value VS (value) #IMPLIED in DTD
【发布时间】:2013-11-28 18:38:41
【问题描述】:

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

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 2017-01-22
      • 2011-12-24
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      相关资源
      最近更新 更多