XML入门(一)
来源:互联网 发布:linux eth1 改为eth0 编辑:程序博客网 时间:2024/05/21 15:36
由于项目的需要,今天稍微看了一下XML这个可扩展标记语言,了解十分浅薄,但是有了基本的概念。
看到XML语言,大家第一印象的肯定是HTML语言。 HTML(HyperText Markup Language),即超文本标记语言,是用于描述网页文档的一种描述标记言。而XML(Extensible Markup Language),是一种类似HTML的可扩展标记语言,它的标记都是自定义的,其设计宗旨是包含和传输数据。
这里我简单列一下HTML和XML的差异:
1,XML不是用来替换HTML的技术;
2,XML和HTML为不同的目的而设计;
3,XML设计的核心是包含和传输数据,而HTML设计的核心是显示数据。
我们看一下他们的历史发展:
XML的组成:声明,标签,元素,子元素,父元素,注释等等。
再者,我们说一下XML的语法要求:
1,XML文档必须有一个顶层元素,即文档元素,所有其他元素必须嵌入在文档元素中。
2,元素嵌套要正确,即如果一个元素在另一个元素中开始,那么必须在同一个元素中结束。
3,每个元素必须同时拥有起始标记和结束标记。
4,起始标记中的元素类型名必须与相应结束标记中的名称完全匹配。
5,元素类型名区分大小写。
6,元素类型名称中可以包含字母,数字以及其他字母元素类型,也可以使用非英文字符,但名称 不能以数字或者符号“-”开头,另外,名称中不能包含空格和冒号“:”。
上边是XML语言本身的相关知识,下边我讲述一下XML的两种语法规则:XML文档是一种结构化的标记文档,XML文档结构有两种描述数据的方法,分别为文档类型定义(Document Type Definition ,DTD)和Schema模式。
先说DTD:
1,DTD的概述:
DTD(Document 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开始,后面是混合类型中可能出现的子元素类型,在右括号之后加符号“*”)
一些符号的含义:
符号
符号类型
描述
示例
()
括号
用来给元素分组
(古龙|金庸|梁羽生),(王朔|余杰),毛泽东
|
竖条
表明在列出的对象中选择一个
(男人|女人)
+
加号
表示该对象最少出现一次,可以出现多次
(成员+)
*
星号
表示该对象允许出现任意多次,也可以是零次
(爱好*)
?
问号
表示该对象可以出现,但只能出现一次
(菜鸟?)
,
逗号
表示对象必须按指定的顺序出现
(西瓜、苹果、香蕉)
4,DTD属性:
(1),属性声明参数及说明
参数
说明
ATTLIST
ATTLIST关键字用于定义元素所具有的属性
Element_name
元素名称
Attribute_name
元素所具有的属性名
Type
属性的类型
Default_value
属性的默认值
(2),属性类型:
类型
具体的含义说明
CDATA
这个类型表明该属性只能包含字符数据,
ID
该属性的取值必须是唯一的。
IDREF,IDREFS
这个属性的值实际上就象C++中的指针一样,它是一个指向文档中其他地方声明的ID值。所以如果具体的文档中该属性的取值和它所指向的ID值不匹配的话,就会返回错误。IDREFS和IDREF类似,但是可以具有由空格分隔的多个引用。
NMTOKEN,NMTOKENS
NMTOKEN和CDATA非常类似,不同之处在于它是CDATA的一个子集。它所使用的字符必须是字母、数字、句点、破折号、下划线或冒号。NMTOKENS和NMTOKEN类似,不同之处在于它可以包含多个值,每个值之间用空格进行分隔
NOTATION
NOTATION属性的值必须引用在文档中其他地方声明的某个注解的名称
POSTTION
枚举属性类型,指定属性值为定义的文本字符串中的一个。
举例说明:上边一个XML例子的DTD文档。
- <!DOCTYPE Resume
- [
- <!--说明Resume元素中包含子元素Name,Email,HomePage,Publication-->
- <!ELEMENT Resume (Name,Email,HomePage,Publication)>
- <!--说明Name,Emal,HomePage元素只能包含字符数据,不能包含子元素-->
- <!ELEMENT Name (#PCDATA)>
- <!ELEMENT Email (#PCDATA)>
- <!ELEMENT HomePage (#PCDATA)>
- <!--说明Publication包含Book子元素-->
- <!ELEMENT Publication (Book)>
- <!ELEMENT Book (Title,Pages)>
- ]>
最后我们简单介绍一下Schema模式:
1,概述:Schema模式使用的是一种类似于XML的语言,该模式中既有全局声明也有局部声明。Schema模式具有一套完整的数据类型系统,以便对数据类型进行详细定义,Schema模式文档是一个独立于XML文档的文本文件,其扩展名为.xsd。
2,举例:
- XML入门(一)
- XML入门(一)
- xml入门(一)
- XML基础入门(一)
- XML基础入门(一)
- XML入门学习(一)
- XML基础入门(一)
- XML解析入门之JDOM(一)
- XML 入门学习笔记(一)
- XML 入门一
- XML入门一
- XML 从入门到精通(一)XML基础
- XML入门的常见问题(一)
- XML入门的常见问题(一)
- XML入门的常见问题(一)
- Android入门之TabHost一(不用xml,纯java)
- Web API入门之移除XML格式(一)
- JSON 入门 之 JSON与XML 的比较(一)
- ArrayAdapter的使用
- Oracle 11gR2 RAC 修改监听器端口号的步骤
- hdu2000~hdu2015
- linux下C获取系统时间的方法
- 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧
- XML入门(一)
- ARM Linux系统调用的原理
- 一直在DEBUG整理
- spring学习笔记
- auto ssh other linux host via expect
- 当UIScrollView 遇到 autolayout
- Segmentation fault 问题浅谈
- SQL中concat()函数、substr()函数与length()函数
- 对一组数乱序