都是仅含文本的元素:(3).含其他元素的元素
一个元素可以仅包含其他的元素。
容器元素称为父(parent),被包含的元素称为子(child)。
(4).混合元素
混合元素既含有文本也含有子元素。
综上所述,元素有以下条件:
(l)元素必须含有开始标签和结束标签。
在没有内容的情况下,才可以使用省略写法;
(2)标签名称必须符合XML命名规则;
(3)元素必须正确地嵌套。
3.2.2属性
在XML文档中,提供信息的另一种方法就是在元素的开始标签中使用属性。
属性通常为它们所修饰的元素提供额外的信息。
一个元素中可以出现的属性的数量是没有限制的。
属性由名称/值对组成,其中值是包含于单引号或双引号中的。
属性的两种通常用法是转换信息格式和指定特定的格式或编码。
当元素包含属性时,常称为复合类型(complextype)元素。
在同一个元素内,可以为不同的属性分别使用双引号或单引号。
请注意,不要在同一个属性中分别使用单引号和双引号,否则文档就不是合式的了。
注意 从文字处理文档中剪切属性粘贴到XML文档中时要十分小心。
文字处理软件通常使用小引号,而这会在XML文档中引起错误。
还可以将属性改写为嵌套的子元素。
现在总结一下与属性相关的规则:
(l)属性由名称/值对组成;
(2)属性值必须封装在单引号或双引号中;
(3)属性中不能含有XML标签;
(4)属性名称必须遵循XML命名规则。
3.2.3文本
所有XML文档内部的文本都包含于开始标签和结束标签内部。
除非该文本被标记为CDATA,那么它将会被认为是XML,从而做相应的处理。
也就是说,左尖括号会被认为是某个XML标签的一部分。
如果希望在文本中使用保留的字符,那么必须将它们写为字符实体。
例如,可以将左尖括号<写作<。
保留字符也可以嵌入到CDATA中。
3.2.4CDATA段
CDATA可以对文本块进行标记,这样它们就不会被当作XML进行处理。
这对于包含XML保留字符的文本来说是非常有用的。
CDATA段可用于在XML文档中嵌入代码,如JavaScript代码,或者加入不需要处理的内容。
例如,当一个应用程序从数据库里读取数据并且将它标记在XML文档中时,它可能将所有的内容都嵌入到CDATA段中,以避免对那些保留字一个一个地进行处理。
3.2.5实体
字符实体是表示单一字符的符号。
在XHTML中,字符实体被用于表示一些特殊的符号,如与号&(&)和不间断空格( )。
在XML文档中,可以用字符实体替代保留字符。
因为所有的标签都以左尖括号开始,所以在一个元素的文本中是无法包含这个字符的。
以下这些保留符号是需要注意的:
(l)<,表明一个标签的开始;
(2)&,表明一个实体的第一个字符;
(3)xml,保留为用于对XML语言其他部分的引用。
有时一些字符是不能加入到XML文档中的,也许因为这些字符不在键盘上或者它是图形字符。
在这种情况下,可以使用Unicode或十六进制数字将它们以字符实体的形式加入。
比如,可以将版权符号ã编码成©或©。
以开始并以分号结束的引用都是字符引用。
中间的数字是所需字符的Unicode编码。
如果编码写成十六进制形式,那么它的前面有一个x作为前缀。
实体也可以自己定义。
比如,可以将Copyright2006Apress定义为©right;。
每次需要在XML文档中包含这段文字时,都可以使用实体引用©right;。
这使文本更容易管理和更新。
4.XML的工作原理
4.1XML数据结构转换技术
在XML的应用中,有的XML数据需要转换到其他结构的XML数据,为此W3C制订了描述标准化的XML数据结构转换规则的语言XSLT。
XSLT是为显示和打印XML,而从XSL规范独立出来的规范,原本是描述排版信息的语言,因此,用XSLT制作的程序称为样式表。
但是,XSLT也可以用于排版以外的各种用途。
例如,使用了不同Schema(标记集合)的企业团体之间交换XML数据时,需要将使用了各公司独自数据格式的XML数据向双方系统共同采用的业界标准格式结构转换以后,才可能进行数据交换。
在XSLT中不仅描述了转换规则,结构转换还可以交给XSLT样式表的执行引擎(XSLT Processor)。
为了跨过业界之间的障碍实现数据交换,其它文件格式的数据交换也会经常发生,尽管如此,结构转换时如果利用XSLT,可以不改程序只改变样式表就可以了。
4.2显示和打印XML数据的技术
4.2.1XML3种方法:
1.用CSS定义打印和显示排版信息;
2.用XSLT转换到HTML进行显示和打印;
3.用XSLT转换成XSL的FO(Formatter Object) 进行显示和打印。
4.2.2用XSLT改变XML数据
使用XSLT,可以改变XML元素名、属性名、元素层次结构等,根据XSLT的指定,可以将XML的元素转换为HTML元素,则可以是用浏览器浏览。
这种用浏览器显示XML数据的方法是最常用的方法。
4.2.2XSL是用XML描述的文件
XML是一种可以详细描述商用印刷排版水平的规范,XSL排版信息的定义。
用XSL指定排版信息的方法由2步组成:
(1).将要打印、显示的原XML树进行结构变换,追加排版信息生成新的树结构(XSL-FO树);
(2).将这个新树传递给XSL-FO对应的打印和显示引擎进行相应的操作。
4.3定义XML数据结构的技术
在XML中用户可以自由的定义标记名以及与标记相关的元素及元素层次,这是XML的主要特征。
为了在企业团体之间进行XML格式的数据的交换,XML数据的结构、元素的名称、元素的数据类型以及元素的亲子关系都需要仔细考虑,一定要设计成人和系统能够理解的语言。
XML Schema 在XML中,所谓的“DTD”就是Schema文件。
DTD描述的Schema应用非常广泛。
从SGML继承下来的DTD显然有许多不足的地方。
为了解决这些问题,W3C制订了Schema语言XML Schema。
XML Schema中有下述DTD中不具备的特征:
多个Schema复合使用XML名字空间;用XML语法描述;可以详细定义元素的内容及属性值的数据类型。
由于在XML Schema中的数据结构也都是用XML数据来表现的,与DTD相比数据量增大很多。
不仅支持字符串、10进制数、浮动小数点、日期等,还支持m回以上和n回以下出现的元素(m、n为整数)的指定。
例如“邮编xxxxxx”(x是字符)是邮政编码元素的格式指定等都是DTD所不能表现的内容。
XML Schema于2001年5月成为W3C的推荐规范,对XML的利用产生了重要的影响。
4.4 XML的主要技术分类
XML是描述内容的数据格式,在使用XML数据时,还需要XML数据的显示、打印、数据结构的变更等许多相关技术。
4.4.1处理XML数据
一定要使用XML Processor(也就是XML Parser),把XML数据结构的检查等交给XML Parser去做。
开发工程师只需将XML数据的检查工作交给XMLProcessor即可,集中精力开发应用程序部分,减少了不小的负担。
应用程序对接收到XMLProcessor传递来的XML树进行处理,向用户提供服务。
此时,不管是电子商务,还是知识管理,都是定义XML数据结构的技术、显示打印XML数据的技术、XML数据结构变更技术、XML数据联接整合技术、用程序操作XML树的API和其它应用技术的组合。
4.5XML类似新闻阅读器
用户在网站上订阅新闻,一般来说网站上会给出一种标志性的东西。
然后将这种标志性的东西(Feed)提交到新闻阅读器程序中。
新闻阅读器接到Feed后,分析Feed文件。
然后将解析出的内容组织起来,显示到新闻阅读器当中,供用户阅读。
用户对新闻进行更新,刷新Feed。
等等......
5.XML的应用
5.1Web应用
XML文档无疑将成为Web资源的重要组成部分,而且基于XML的文档资源使Web搜索引擎的智能化变得容易起来。
除此之外,XML能够用来建立HTML所不能达到的多层Web应用,特别地,XML在Web应用中有下列用途:
集成不同数据源、本地计算、数据的多种显示、支持Web应用的互操作和集成、基于语义的DataMining。
5.1.1XML在Web数据挖掘中的应用
XML给基于Web的应用软件赋予了强大的功能和灵活性,因此它给开发者和用户带来了许多好处。
XML能够使不同来源的结构化的数据很容易地结合在一起。
软件代理商可以在中间层的服务器上对从后端数据库和其它应用处来的数据进行集成。
然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。
XML的扩展性和灵活性允许它描述不同种类应用软件中的数据,从描述搜集的Web页到数据记录,从而通过多种应用得到数据。
同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。
利用XML,用户可以方便地进行本地计算和处理,XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。
使用者可以用不同的方法处理数据,而不仅仅是显示它。
XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据,数据计算不需要回到服务器就能进行。
XML可以被利用来分离使用者观看数据的界面,使用简单灵活开放的格式,可以给Web创建功能强大的应用软件,而原来这些软件只能建立在高端数据库上。
另外,数据发到桌面后,能够用多种方式显示。
XML还可以通过以简单开放扩展的方式描述结构化的数据,XML补充了HTML,被广泛地用来描述使用者界面。
HTML描述数据的外观,而XML描述数据本身。
由于数据显示与内容分开,XML定义的数据允许指定不同的显示方式,使数据更合理地表现出来。
本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。
CSS和XSL为数据的显示提供了公布的机制。
通过XML,数据可以粒状地更新。
XML也允许加进其他数据,比如预测的温度。
加入的信息能够进入存在的页面,不需要浏览器重新发一个新的页面。
XML应用于客户需要与不同的数据源进行交互时,数据可能来自不同的数据库,它们都有各自不同的复杂格式。
但客户与这些数据库间只通过一种标准语言进行交互,那就是XML。
由于XML的自定义性及可扩展性,它足以表达各种类型的数据。
客户收到数据后可以进行处理,也可以在不同数据库间进行传递。
总之,在这类应用中,XML解决了数据的统一接口问题。
但是,与其他的数据传递标准不同的是,XML并没有定义数据文件中数据出现的具体规范,而是在数据中附加TAG来表达数据的逻辑结构和含义。
这使XML成为一种程序能自动理解的规范。
XML应用于将大量运算负荷分布在客户端,即客户可根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只须发出同一个XML文件。
XML将处理数据的主动权交给了客户,服务器所作的只是尽可能完善、准确地将数据封装进XML文件中,正是各取所需、各司其职。
XML的自解释性使客户端在收到数据的同时也理解数据的逻辑结构与含义,从而使广泛、通用的分布式计算成为可能。
XML还被应用于网络代理,以便对所取得的信息进行编辑、增减以适应个人用户的需要。
有些客户取得数据并不是为了直接使用而是为了根据需要组织自己的数据库。
此外,XML文件中还可以包含进诸如难度系数、往年错误率等其他相关信息,这样只需几个小程序,同一个XML文件便可变成多个文件传送到不同的用户手中。
5.1.2XML在Web风险描述中的应用
通用漏洞发布(CommonVulnerabilITyExposures,CVE)推出了漏洞的XML格式文档;OASIS和OWASP分别提出了各自的基于XML漏洞描述语言。
若在这些漏洞描述中增加有关风险的发现信息,风险的危害信息和风险的解决信息。
这样在漏洞查找和描述的基础上增加了风险性质(发生概率、攻击成本等)的量化分析和策略的自动选择的条件为系统自动防御和策略自动实施创造了可能性。
5.1.3XML开放性在Web服务中的应用
XML的开放性,使得许多软件生产商提供的软件产品支持XML,使得XML成为不同用户的异构应用系统之间的数据交换的标准语言,具备了数据交换的透明性、各个用户只要保证自己的信息系统提供的数据符合XML规范,就不用担心数据接收方的解码问题。
不同的用户间对XML标识采用统一的约定交互信息的双方不会因为对方使用的系统不同而受到影响。
XML可以表达任意层次的结构性数据嵌套并可以进行数据正确性检验,支持用户间复杂的数据交换。
XMLSchema(XSD)定义了一套标准的数据类型,并给了一种语言来扩展它,从而实现了用户间的数据共享。
由于WebService自身的特点,XML为WebService的跨平台性、透明地穿越合作用户的防火墙提供了保障。
5.1.4XML加密优势在Web中的应用
对Web中数据保护的常用技术有数据加密、数字签名和访问控制,而XML作为一种元语言,已经成为Web异构环境下不同类型和不同领域数据交换的开放标准。
XML文档的访问控制机制与一般的访问控制机制不同,传统的访问控制机制不能直接应用于对XML文档的访问控制中。
这是因为XML查询语言的存在,能直接寻找到每一个XML语义元素。
访问控制模型必须能以多种粒度级别对XML语义元素制定访