DTD 属性详解

在属性的声明中TYPE 部分为属性的类型设定,DTD  中属性的类型有10 种,下面将

对这些数据类型进行逐一的介绍。

    1. CDATA

    CDATA   型表明属性值为不包含“< ”和“"”的任意字符串,如果属性值中需要包含

 <”和“"”,则可使用特殊字符来代替。

    2. Enumerated

    如果属性值并不是任意的字符串,而是在几个可能的值中进行选择,如书籍的“类别”

属性,其值可为“文艺”,也可为“自然科学”,而不可能为其他情况时,则可以将书籍

的“类别”属性设定为Enumerated 型。

    3. ID

    当元素的某个属性值是不能重复时,如书籍的ISBN  属性、个人的“身份证号”属性

等,要定义这样的属性则需使用属性的ID 类型。在一个XML  文档中,所有元素的ID

类型属性的属性值必须是唯一的,不可重复,另外,一个元素不能有超过一个ID 类型的

属性。

    4. IDREF IDREFS

    IDREF Identifier Reference 的缩写,IDREF ID 类型属性的关系为子元素与父元素

的关系,即IDREF 类型属性的值必须是其他元素的ID 类型属性的值,且该ID 类型属性的

值必须在文档的其他地方被设定过。IDREFS                 类型属性的属性值可有多个,每一个都必须

是在文档其他地方被设定了的ID 类型属性的值,而这多个属性值之间用空格隔开。

  IDREFS 的使用,代码如源程序code4_10.xml 所示。

      <?xml version="1.0" encoding="gb2312"?>

      <!DOCTYPE school [

         <!ELEMENT school (teacher, subject*)>

         <!ELEMENT teacher (#PCDATA)>

         <!ELEMENT subject (#PCDATA)>

         <!ATTLIST teacher

         teach IDREFS #IMPLIED

      >

         <!ATTLIST subject

         number ID #REQUIRED

      >

      ]>

      <school>

         <teacher teach="c 0001 c 0002 c 0003">

           丁潇

      </teacher>

         <subject number="c0001">

          PowerBuilder

          </subject>

         <subject number="c0002">

          AutoCAD

          </subject>

         <subject number="c0003">

          XML

          </subject>

      </school>

5. ENTITY ENTITIES

    ENTITY  类型的属性提供了把外部二进制形式的文件(.jpeg.mp3  )和外部不可解

析实体链接到XML文档的功能。因此其属性值也必须为不可解析的链接外部实际数据的

通用实体名。ENTITIES  类型属性的属性值可由多个不可解析的外部实体名称组成,各实体

名称之间使用空格隔开。

  ENTITY ENTITIES 的使用,代码如源程序code4_11.xml 所示。

 

      <?xml version="1.0" encoding="gb2312"?>

      <!DOCTYPE customers [

         <!ELEMENT customers (customer*)>

         <!ELEMENT customer (username, password, picture)>

         <!ELEMENT username (#PCDATA)>

         <!ELEMENT password (#PCDATA)>

   <!ELEMENT picture EMPTY>

         <!ATTLIST picture pic ENTITIES #REQUIRED

      >

         <!ATTLIST customer

      ID #REQUIRED

      >

         <!ENTITY pic1 SYSTEM "a.jpg">

         <!ENTITY pic2 SYSTEM "b.jpg">

         <!ENTITY pic3 SYSTEM "c.jpg">

         <!ENTITY pic4 SYSTEM "d.jpg">

      ]>

      <customers>

         <customer ID="c0500103">

            <username>cheaperget</username>

            <password>12345678</password>

            <picture pic="pic1 pic2"/>

         </customer>

         <customer ID="c0500208">

            <username>dreamingboy</username>

            <password>22345678</password>

            <picture pic="pic3 pic4"/>

         </customer>

      </customers>

 

    本例不是所有浏览器都可以自动识别的通用格式,仅仅某些浏览器和应用程序

可能采用的在文档中嵌入非XML 数据的方法而已。

    6. NMTOKEN NMTOKENS

    NMTOKEN 类型的属性限定属性值是有效的XML 名称,这个属性值可以由英文、数

字、“.”、 _ ”、“-”、“:”等组成,这里有几点需要注意。

    (1) 不能包括空格。

    (2) 以上字符中除“:”以外,其他字符都可以作为开头字符。

    (3) :”可以出现在中间,但由于它是命名域的关键字符,所以一般不提倡使用。

    正因为NMTOKEN 类型的属性对于字符的严格要求,使得它在一些常用编程语言中,

都是合法的数据,这就为这些编程语言对XML 文档数据的操作打下了良好的基础。

    NMTOKENS 类型的属性具有与NMTOKEN 属性相近的形式。这种类型的属性可以使如

下情况合法——属性由若干XML 名称组成,彼此间由空格隔开。通常可为使用NMTOKEN

属性相同的理由而使用NMTOKENS 属性,但仅仅在需要多个名字的时候。

 

    7. NOTATION

    XML 文档中引入了外部不可解析的实体后,解析器无法解析这些二进制文件,这时,

就可以使用NOTATION类型的属性为这些二进制文件指定与其对应的应用软件以对其进

行处理。

  NOTATION  的使用,代码如下

      <?xml version="1.0" encoding="gb2312" ?>

      <!DOCTYPE customers [

           <!ELEMENT customers (customer*)>

      <!ELEMENT customer (username,password,picture)>

      <!ELEMENT username (#PCDATA)>

      <!ELEMENT password (#PCDATA)>

      <!NOTATION mspaint SYSTEM "C:/WINDOWS/system32/mspaint.exe">

      <!ELEMENT picture EMPTY>

      <!ATTLIST picture pic ENTITIES #REQUIRED>

      <!ATTLIST picture procedure NOTATION #REQUIRED>

      <!ATTLIST customer ID ID #REQUIRED>

      <!ENTITY pic1 SYSTEM "a.jpg">

      <!ENTITY pic2 SYSTEM "b.jpg">

      <!ENTITY pic3 SYSTEM "c.jpg">

      <!ENTITY pic4 SYSTEM "d.jpg">

      ]>

      <customers>

      <customer ID="c0500103" >

          <username>cheaperget</username>

          <password>12345678</password>

          <picture pic="pic1 pic2" procedure="mspaint"/>

      </customer>

      <customer ID="c0500208" >

          <username>dreamingboy</username>

          <password>22345678</password>

          <picture pic="pic3 pic4" procedure="mspaint"/>

      </customer>

      </customers>

 

你可能感兴趣的:(DTD 属性详解)