最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442

XML入门教程:XML的属性声明

日期:11-18    来源:    作者:

 jq1中国设计秀

一个有效的XML文档,必须对元素的属性进行声明。使用ATTLIST声明来完成,一个ATTLIST可以为一个元素类型声明多个属性。jq1中国设计秀

<!ATTLIST image src CDATA #REQUIRED>

上例声明image元素必须有一个src属性,该属性的值是字符数据。可用ATTLIST声明为一个元素声明多个属性,如:jq1中国设计秀

<!ATTLIST image src    CDATA #REQUIRED
                width  CDATA #REQUIRED
                height CDATA #REQUIRED
                alt    CDATA #IMPLIED
>

上述声明指出src、width、height属性是必须的,alt属性是可选的。jq1中国设计秀

本文由网页教学网(http://www.webjx.com)整理发布!转载请注明出处,谢谢!jq1中国设计秀

1. 属性类型

    CDATA类型属性值可包含任意文本字符串。DTD不能指定属性为一个整数或一个日期,Schema能提供更为强大的数据类型。jq1中国设计秀

    NMTOKEN类型属性值是一个XML名称记号。XML名称记号与XML名称类似,但XML名称记号允许所有的字符作为名称的开始字符,而XML名称的第一个字母必须是字母、表意字符和下划线。因此10,.bashrc是合法的XML名称标记,但不是合法的XML名称。每个XML名称都是一个XML名称标记,然而XML名称标记不全是XML名称。如果属性包含1990,2005之类的整数,则应该指定其类型为NMTOKEN。如:jq1中国设计秀

    <!ELEMENT person birthday NMTOKEN #REQUIRED>
    

    NMTOKENS类型属性包含一个或多个用空白分隔的XML名称记号。如:jq1中国设计秀

    <person dates="02-01-2005 03-01-2005 05-01-2005">person</person>
    

    对应的声明应为:jq1中国设计秀

    <!ATTLIST person dates NMTOKENS #REQUIRED>
    

    另一方面,对01/02/2005这样的形式不能使用该声明,因为其中的正斜杠不是合法的名称字符。jq1中国设计秀

    枚举声明,枚举不用关键字。直接列举所有的值,中间用竖线分隔。如:jq1中国设计秀

    <!ATTLIST date month(January | February | March | April | May | June | July | August | September | October | November | December) #REQUIRED>
    

    针对上述声明,date元素的month属性可选十二个月份的中一个。jq1中国设计秀

    ID类型的属性必须包含一个XML名称,而且该名称在文档中是独一无二的。ID属性可为元素分配一个唯一的标识符。jq1中国设计秀

    <!ATTLIST name card_id ID #REQUIRED>
    

    由于数字不是合法的XML名称,所以ID编号不能以数字开头,解决办法是在前面加下划线或字母。jq1中国设计秀

    IDREF类型的属性指向文档中某元素的ID类型的属性。因此,它必须是一个XML名称,它的作用是当简单的包含关系不能满足要求时在元素间建立多对多关系。如:jq1中国设计秀

    <project project_id="p1">
       <goal>deploy linux</goal>
       <team_member person_card_id="c123">
    </project>
    
    <person card_id="c123">
       <name>linuxsir</name>
       <assignment project_project_id="p1">
    </person>
    

    project元素的project_id属性和person元素的card_id属性应该是ID类型。team_member元素的person_card_id属性和assignment元素的project_project_id属性是IDREF类型。对应的声明如下:jq1中国设计秀

    <!ATTLIST person  card_id    ID #REQUIRED>
    <!ATTLIST project project_id ID #REQUIRED>
    
    <!ATTLIST team_member person_card_id     IDREF #REQUIRED>
    <!ATTLIST assignment  project_project_id IDREF #REQUIRED>
    

    IDREFS类型的属性包含一个XML名称列表。名称间用空白间隔,且每个名称都是文档中某个元素的ID。当某个元素需要引用多个其他元素时使用该元素。如:jq1中国设计秀

    <!ATTLIST person card_id    ID     #REQUIRED
                     assignment IDREFS #REQUIRED>
    <!ATTLIST project project_id ID     #REQUIRED
                     team        IDREFS #REQUIRED>
    

    对应的文档可写成:jq1中国设计秀

    <project project_id="p1" team="c123">
       <gold>deploy linux</gold>
    </project>
    
    <person card_id="c123" assignment="p1">
       <name>Linuxsir</name>
    </person>
    

    ENTITY类型的属性包含在DTD的其它位置声明的未析实体的名称中。如movie元素可能有一个标识激活时播放mpeg或rm文件的实体属性:jq1中国设计秀

    <!ATTLIST movie src ENTITY #REQUIRED>
    

    如果DTD声明了一个名为play的未析实体,则此movie元素可用于在XML文档中嵌入视频文件:jq1中国设计秀

    <movie src="play" />
    

    ENTITIES类型的属性包含在DTD的其它位置声明的多个未析实体名称,其间用空白隔开。jq1中国设计秀

    <!ATTLIST slide_show slides ENTITIES #REQUIRED>
    

    如果DTD声明了未析实体slide1、slide2、slide3、...,则可使用slide_show元素在XML文档中嵌入幻灯片。jq1中国设计秀

    <slide_show slides="slide1 slide2 slide3" />
    

    NOTATION类型的属性包含在文档的DTD中声明的某个记法的名称。该属性类型较少用。理论上,可以使用该属性使某些特殊元素与类型相关联,下例声明为不同的图像类型定义了4个记法,然后规定每个image元素都必须从中选择一种type属性。jq1中国设计秀

    <!NOTATION gif SYSTEM "image/gif">
    <!NOTATION tiff SYSTEM "image/tiff">
    <!NOTATION jpeg SYSTEM "image/jpeg">
    <!NOTATION png SYSTEM "image/png">
    <!ATTLIST image type NOTATION (gif | tiff | jpeg | png) #REQUIRED>
    

    每个image元素的type属性的值可以为gif,tiff,jpeg和png四个值中的一个。该属性比枚举类型稍具优势,因为记法的实际MIME媒体类型在理论上是可用的。由于斜杠在XML名称中不是一个合法字符,所以枚举类型不能指定image/png或image/jpeg作为允许值。jq1中国设计秀

    2. 属性缺省值

    每个ATTLIST声明除了要提供一种数据类型外,还要声明属性的缺省行为。jq1中国设计秀

    本文由网页教学网(http://www.webjx.com)整理发布!转载请注明出处,谢谢!jq1中国设计秀

      #IMPLIED,属性可选。jq1中国设计秀

      #REQUIRED,属性必须有。jq1中国设计秀

      #FIXED,属性是常量,不能更改。jq1中国设计秀

      <!ATTLIST person name CDATA #FIXED "linuxsir"
      

      Literal,作为一个引用字符串的实际缺省值。jq1中国设计秀

      <!ATTLIST person name NMTOKEN "linuxsir"
      

      如果没有显示指明person元素的name属性,则该值为linuxsir。jq1中国设计秀