XML入门(一)

来源:互联网 发布:linux eth1 改为eth0 编辑:程序博客网 时间:2024/05/21 15:36

        由于项目的需要,今天稍微看了一下XML这个可扩展标记语言,了解十分浅薄,但是有了基本的概念。

        看到XML语言,大家第一印象的肯定是HTML语言。 HTMLHyperText Markup Language,超文本标记语言,是用于描述网页文档的一种描述标记言。XMLExtensible Markup Language,是一种类似HTML可扩展标记语言,它的标记都是自定义的,其设计宗旨是包含和传输数据。


这里我简单列一下HTMLXML的差异:

 1XML不是用来替换HTML的技术;

 2XMLHTML为不同的目的而设计;

 3XML设计的核心是包含和传输数据,而HTML设计的核心是显示数据。


我们看一下他们的历史发展:

XML的组成:声明,标签,元素,子元素,父元素,注释等等。


再者,我们说一下XML的语法要求:

         1XML文档必须有一个顶层元素,即文档元素,所有其他元素必须嵌入在文档元素中。

        2,元素嵌套要正确,即如果一个元素在另一个元素中开始,那么必须在同一个元素中结束。

        3,每个元素必须同时拥有起始标记和结束标记。

        4,起始标记中的元素类型名必须与相应结束标记中的名称完全匹配。

        5,元素类型名区分大小写。

        6,元素类型名称中可以包含字母,数字以及其他字母元素类型,也可以使用非英文字符,但名称       不能以数字或者符号“-”开头,另外,名称中不能包含空格和冒号“:”。

 

      上边是XML语言本身的相关知识,下边我讲述一下XML的两种语法规则:XML文档是一种结构化的标记文档,XML文档结构有两种描述数据的方法,分别为文档类型定义(Document Type Definition ,DTDSchema模式。

 

   先说DTD

        1DTD的概述:

         DTDDocument TypeDefinition),定义了XML文件的结构,为XML文件提供了语法与规则,内容既可以定义在XML文件中,也可以定义在XML文件之外(分为内部DTD和内部DTD(效果一样)),使用XML进行数据教书的行业或组织可定义自己的DTD


   分类:

       每个XML文档可单独定义的DTD,也可以推广为一个系统共享的公用DTD

       外部DTD,一个由权威机构制定的,提供给特定行业或公众使用哦的DTD


       语法:

        <!ELEMENT NAMECONTENT>   ,说明:NAME表示一个标准的XML的标记名称,CONTENT为下边介绍的内容模型。

 

       2,为什么要使用DTD

      (1),通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。

      (2),通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。

      (3),而您的应用程序也可使用某个标准的 DTD来验证从外部接收到的数据。

      (4),您还可以使用 DTD来验证您自身的数据。

      总而言之就是给我们规章可循,使XML文件可以按照DTD很好的交换和表现。

 

        3,内容模型介绍:

CONTENT

解释

EMPTY

如果一个元素的CONTENT被声明为EMPTY的话,表示该元素不能包含任何子元素和文本

ANY

表示该元素其中可以包含任何本身有效的元素内容,也就是说,它能够包含在DTD其他位置已经声明过的元素。

#PCDATA

表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素。

子元素类型

表明元素可以包含一系列的子元素

混合模型

指元素既包含子元素,又包含已编译的字符数据。(以#PCDATA开始,后面是混合类型中可能出现的子元素类型,在右括号之后加符号“*”)

 

     一些符号的含义:

符号

符号类型

描述

示例

()

括号

用来给元素分组

(古龙|金庸|梁羽生),(王朔|余杰),毛泽东

|

竖条

表明在列出的对象中选择一个

(男人|女人)

+

加号

表示该对象最少出现一次,可以出现多次

(成员+

*

星号

表示该对象允许出现任意多次,也可以是零次

(爱好*

问号

表示该对象可以出现,但只能出现一次

(菜鸟?

逗号

表示对象必须按指定的顺序出现

(西瓜、苹果、香蕉)

 

 

       4DTD属性:

 

  1),属性声明参数及说明

参数

说明

ATTLIST

ATTLIST关键字用于定义元素所具有的属性

Element_name

元素名称

Attribute_name

元素所具有的属性名

Type

属性的类型

Default_value

属性的默认值

 

  2),属性类型:

类型

具体的含义说明

CDATA

这个类型表明该属性只能包含字符数据,

ID

该属性的取值必须是唯一的。

IDREF,IDREFS

这个属性的值实际上就象C++中的指针一样,它是一个指向文档中其他地方声明的ID值。所以如果具体的文档中该属性的取值和它所指向的ID值不匹配的话,就会返回错误。IDREFSIDREF类似,但是可以具有由空格分隔的多个引用。

NMTOKEN,NMTOKENS

NMTOKENCDATA非常类似,不同之处在于它是CDATA的一个子集。它所使用的字符必须是字母、数字、句点、破折号、下划线或冒号。NMTOKENSNMTOKEN类似,不同之处在于它可以包含多个值,每个值之间用空格进行分隔

NOTATION

NOTATION属性的值必须引用在文档中其他地方声明的某个注解的名称

POSTTION

枚举属性类型,指定属性值为定义的文本字符串中的一个。

 

 

   举例说明:上边一个XML例子的DTD文档。

[html] view plaincopyprint?
  1. <!DOCTYPE Resume  
  2. [  
  3.   <!--说明Resume元素中包含子元素Name,Email,HomePage,Publication-->  
  4.   <!ELEMENT Resume (Name,Email,HomePage,Publication)>  
  5.   <!--说明Name,Emal,HomePage元素只能包含字符数据,不能包含子元素-->  
  6.   <!ELEMENT Name (#PCDATA)>  
  7.   <!ELEMENT Email (#PCDATA)>  
  8.   <!ELEMENT HomePage (#PCDATA)>  
  9.   <!--说明Publication包含Book子元素-->  
  10.   <!ELEMENT Publication (Book)>  
  11.   <!ELEMENT Book (Title,Pages)>   
  12. ]>  

  

  最后我们简单介绍一下Schema模式:

       1,概述:Schema模式使用的是一种类似于XML的语言,该模式中既有全局声明也有局部声明。Schema模式具有一套完整的数据类型系统,以便对数据类型进行详细定义,Schema模式文档是一个独立于XML文档的文本文件,其扩展名为.xsd

       2,举例:




可扩展标记语言是一种元标记语言,即定义了用于定义其他特定领域有关语义的、结构化的标记语言,这些标记语言将文档分成许多部件并对这些部件加以标识。XML 文档定义方式有:文档类型定义(DTD)和XML Schema。DTD定义了文档的整体结构以及文档的语法,应用广泛并有丰富工具支持。XML Schema用于定义管理信息等更强大、更丰富的特征。XML能够更精确地声明内容,方便跨越多种平台的更有意义的搜索结果。它提供了一种描述结构数据的格式,简化了网络中数据交换和表示,使得代码、数据和表示分离,并作为数据交换的标准格式,因此它常被称为智能数据文档。
XML技术已经广泛应用于e-Learning应用系统的开发,大多数的商用e-Learning平台都支持XML标准。一些主要的网络设备制造商,如CISCO、JUNIPER等,生产的网络设备也已提供了对XML的支持,以利于今后基于XML的网络管理。
XML在e-Learning管理中的应用
一、兼容现有协议
XML文档格式的管理信息可以很容易地通过HTTP 协议传输,由于HTTP是建立在TCP之上的,故管理数据能够可靠传输。XML还支持访问XML文档的标准API,如DOM,SAX,XSLT,Xpath等。
二、统一的管理数据存取格式
XML能够以灵活有效的方式定义管理信息的结构。以XML格式存储的数据不仅有良好的内在结构,而且由于它是W3C提出的国际标准,因而受到广大软件提供商的支持,易于进行数据交流和开发。现有网络管理标准如TMN、SNMP等的管理信息库规范决定了网管数据符合层次结构和面向对象原则,这使得以XML格式存储网管数据也非常自然,易于实现。
三、不同应用系统间数据的共享和交互
只要定义一套描述各项管理数据和管理功能的XML语言,用Schema对这套语言进行规定,并且共享这些数据的系统的XML文档遵从这些Schema,那么管理数据和管理功能就可以在多个应用系统之间共享和交互。
四、底层传输的数据更具可读性
网络中传输的底层数据因协议不同而编码规则不同,虽然最终传输时都是二进制位流,但是不同的应用协议需要提供不同的转换机制。这种情况导致管理站在对采用不同协议发送管理信息的被管对象之间进行管理时很难实现兼容。如果协议在数据表示时都采用XML格式进行描述,这样网络之间传递的都是简单的字符流,可以通过相同的XML解析器进行解析,然后根据不同的XML标记,对数据的不同部分进行区分处理,使底层数据更具可读性。[3] 
五、它和json都是一种数据交换格式
XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言;可扩展的样式语言(Extensible Style Language,XSL),即XML的样式表语言;以及可扩展链接语言(Extensible Link Language,XLL)。
(1)DTD
DTD规定了文档的逻辑结构。它可定义文档的语法,而文档的语法反过来也能够让XML语法分析程序确认页面标记使用的合法性。DTD定义了页面的元素、元素的属性及元素和属性间的关系。元素与元素间用起始标记和结束标记来定界,对于空元素,用一个空元素标记来分隔。每一个元素都有一个用名字标识的类型,也称为它的通用标识符,并且它还可以有一个属性说明集。每个属性说明都有一个名字和一个值。理想定义应该面向描述与应用程序相关的数据结构,而不是如何显示数据。就是说,应该把一个元素定义为一个标题行,之后让样式表和脚本定义显示标题行。
DTD不具强制性。对于简单的应用程序来说,开发商不需建立自己的DTD,可以使用预先定义的公共DTD或不使用。即使某个文档已经有DTD,只要文档组织是良好的,语法分析程序也不必对照DTD来检验文档的合法性。服务器可能己执行了检查,所以检验的时间和带宽将得以大幅度节省。
(2)XSL
XSL是用来规定XML文档样式的语言。XSL能使Web浏览器改变原有文档的表示法,例如改变数据的显示顺序,不必再与服务器进行交互通信。通过样式表的变换,同一文档可以显示得更大,或经过折叠只显示外面的一层,或者变为打印格式。
XSL凭借其本身的可扩展性,能够控制无穷无尽的标记,而且控制每个标记的方式也是无穷尽的,这也给Web提供了高级的布局特性。如文本的旋转、多列和独立区域。同时支持国际书写格式,可在一页上混合使用从左至右、从右至左及从上至下的书写格式。就如同XML介于HTML和SGML之间一样,XSL标准是介于CSS和SGMI的文档样式语义和规范语言之间的。
(3)XLL
XLL支持Web上已有的简单链接,而且将进一步扩展链接,包括终结死链接的间接链接及可从服务器中只查询某个元素的相关部分链接等。
超文本标记语言(HTML)仅仅执行历来与超文本系统概念相关的极少功能,仅支持最简单的链接形式,即指向硬编码位置的单向链接,这与XML相比有着很大的差别。在为XML所设想的真正超文本系统中,所有典型的超文本链接机制全部将得到支持,包括:与位置无关命名,双向链接,可在文档外规定和管理的链接,元超链接(如环路、多个窗口),集合链接(多来源),Transc1usion(链接目标文档是链接源文档的一部分),链接属性(链接类型)。
所有这些可通过XLL来实现。由于XML以SGML作为基础,因此,XLL基本上属于Hytime(超媒体/基于时间的结构语言,ISO10744)的一个子集,另外它还遵循文本编码所倡议规定的链接概念。
XML能方便有效地表示结构化数据,这就使得XML可以作为描述和传输数据的手段。使用XML进行数据交换已经成为计算机软件领域的标准技术模式。通过XML实现数据的标准化、结构化,解决了在不同平台、不同系统之间的数据结构/模式的差异,使得数据层在XML技术的支持下统一起来。[4] 
Web Service全部的规范,技术都是以XML为底层核心和构架基础的,对Web Service而言,SOAP、WSDL和UDDI,都是使用XML作为信息描述和交换的标准手段。XML技术的产生促使了Web Service技术的产生与发展。


0 0