XML入门教程:属性声明-XML/XSLT

所属分类: 网页制作 / XML/XSLT 阅读数: 474
收藏 0 赞 0 分享

一个有效的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属性是可选的。
本文由脚本之家(https://www.jb51.net)整理发布!转载请注明出处,谢谢!

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声明除了要提供一种数据类型外,还要声明属性的缺省行为。
    本文由脚本之家(https://www.jb51.net)整理发布!转载请注明出处,谢谢!

      #IMPLIED,属性可选。
      #REQUIRED,属性必须有。
      #FIXED,属性是常量,不能更改。
      <!ATTLIST person name CDATA #FIXED "linuxsir"
      Literal,作为一个引用字符串的实际缺省值。
      <!ATTLIST person name NMTOKEN "linuxsir"
      如果没有显示指明person元素的name属性,则该值为linuxsir。

更多精彩内容其他人还在看

初学XML的基础知识(认识XML的作用)

“可扩展标记语言”(XML) 提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的 HTML 标记不同,XML 标记用于定义数据本身的结构和数据类型。 XML 使用一组标记来描绘数据元素。每个元素封装可能十分简单也可能十分复杂的数据。您可
收藏 0 赞 0 分享

使用XML实现多渠道接入网站的构架

  其实写这篇文章的目的最多的想法是把自己在去年在瑞士做项目时应用的一个框架给展现出来让大家共享,但我又有点担心我的表达能力不能将我在里面使用的思想很好的表现出来,所以迟迟 不敢下笔,最后还是下了决心,写吧, 不行就在好好改改,当然也希望大家多提些意见。
收藏 0 赞 0 分享

学习XML关于图像超链接的制作

这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址放到<a>的href属性中去,可是这就是在标签中套标签,是不可以的,查了《Web编程实做教程》,才知道正确的解决方案,现在与大家分享。 此段代码运行需要两张图片:a.gif和b.gif。 my
收藏 0 赞 0 分享

Microsoft的XMLHTTP对象介绍

MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。 创建XMLHTTP对象的语句如下: Set objXML = CreateObject("Msxml2.XMLHTTP") 或 Set
收藏 0 赞 0 分享

了解WEB页面工具语言XML(六)展望

六、XML展望   任何一项新技术的产生都是有其需求背景的,XML的诞生是在HTML遇到不可克服的困难之后。近年来HTML在许多复杂的Web应用中遇到了问题,要彻底解决这些问题,必须用功能强大的XML来替代HTML作为Web页面的书写工具。XML有利于信息的表达和结构化组
收藏 0 赞 0 分享

了解WEB页面工具语言XML(五)好处

五、XML带来的好处   (1)更有意义的搜索   数据可被XML唯一的标识。没有XML,搜索软件必须了解每个数据库是如何构建的。这实际上是不可能的,因为每个数据库描述数据都是不同的。有了XML,书就可以很容易以标准的方式按照作者、标题、ISBN序号或其他的标准分
收藏 0 赞 0 分享

用XML将机器内码转换为人们容易理解的信息

  程序中通常会有一些错误代码或标识,为了程序中方便这些东西通常不会使用汉字,经常在程序中用的是一些FileError或数字。还有就是在编码中经常使用的枚举标识对象的状态。而通常这些信息会直接的或间接的现实给用户,可用户需要到的是容易理解的汉字描述。以前要么将这
收藏 0 赞 0 分享

历数Firefox2.0对XML处理的改进

Firefox 2.0 在对 XML 的支持方面有几个重要的改进。目前它的用户部署如日中天。了解 Firefox 2.0 XML 特性的改进,包括在 RSS Web 提要处理方面有争议的变化。 被赋予新应用程序平台的角色后,现在 Web 浏览器可能是最热门的软件。对于软件开
收藏 0 赞 0 分享

将XML数据转换成HTM

使用一个简单的XSL样式表就可以将XML数据转换成HTML。随着XML规范的不断演进,在新的版本中满足每个人的需要似乎已经成为必要;假设有一个表示一个页面内容的XML数据,现在想将其内容转换成布局。下面是想要转换的XML:
收藏 0 赞 0 分享

(javascript+asp)XML、XSL转换输出HTML

Javascript客户端转换 [code] <html> <body> <script language="javascript"> // Load XML var xml = new ActiveXObject
收藏 0 赞 0 分享
查看更多