首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页制作XML/XSLT

XML入门教程:属性声明

来源: 互联网    日期:2009-2-22
 
网页教学网核心提示:一个有效的XML文档,必须对元素的属性进行声明。使用ATTLIST声明来完成,一个ATTLIST可以为一个元素类型声明多个属性。

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

<!ATTLIST image src CDATA #REQUIRED>

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

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

上述声明指出src、width、height属性是必须的,alt属性是可选的。

1. 属性类型

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

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

    <!ELEMENT person birthday NMTOKEN #REQUIRED>
    
  • NMTOKENS类型属性包含一个或多个用空白分隔的XML名称记号。如:

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

    对应的声明应为:

    <!ATTLIST person dates NMTOKENS #REQUIRED>
    

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

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

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

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

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

    <!ATTLIST name card_id ID #REQUIRED>
    

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

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

    <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类型。对应的声明如下:

    <!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。当某个元素需要引用多个其他元素时使用该元素。如:

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

    对应的文档可写成:

    <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文件的实体属性:

    <!ATTLIST movie src ENTITY #REQUIRED>
    

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

    <movie src="play" />
    
  • ENTITIES类型的属性包含在DTD的其它位置声明的多个未析实体名称,其间用空白隔开。

    <!ATTLIST slide_show slides ENTITIES #REQUIRED>
    

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

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

    <!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作为允许值。

2. 属性缺省值

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

  • #IMPLIED,属性可选。

  • #REQUIRED,属性必须有。

  • #FIXED,属性是常量,不能更改。

    <!ATTLIST person name CDATA #FIXED "linuxsir"
    
  • Literal,作为一个引用字符串的实际缺省值。

    <!ATTLIST person name NMTOKEN "linuxsir"
    

    如果没有显示指明person元素的name属性,则该值为linuxsir。



更多的XML入门教程:属性声明请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2009-2-22   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报