XML的基本了解
1.XML是什么: 可扩展的标记语言(eXtensibleMarkup language),预定义的标签是HTML是显示数据,自定义标签的是xml,设计的宗旨是表示数据,非显示数据。即XML描述的是文档的内容与语义,而不是文档应当如何显示。
2.目前经常使用的Xml版本是1.0。XML的作用:
a)在实际的开发中,主要作为程序的配置文件。
b)硬编码:是将程序写死了,xml提高系统的灵活性。
c)XML是一种通用的数据交换格式。可以使不同程序语言之间进行数据的交换。
d)使用XML可以实现异构语言,异构平台之间的交互。
3.解析器(Parse):将标记语言解析执行和显示。比如IE浏览器解析HTML语言。
4.XML标签和元素的命名规范:它可以包含字母,数字,减号,下划线和英文句点。
a)严格区分大小写。
b)只能以字母或下划线开头
c)不能以xml(或XML,Xml等开头),作为保留词用。我们目前可以用,不建议
d)名称字符之间不能有空格或制表符;
e)名称字符之间不能使用冒号。
5.XML的基本语法声明。
a)文档声明:用于表示该文档是一个xml文档。对于XML文档来说,<??>处理指令必须要顶格写,前面不能有任何空白。(前一行连空行都不能有,也不能有注释)。保存在磁盘上的文件编码要与声明的编码一致。既是说你声明的明明是UTF-8,保存成GBK,就会出现错误。
格式:<?xml version=”1.0” ?>。
声明中的enconding属性,说明当前XML文档使用的编码,默认utf-8。
声明中的standalone属性: 说明xml文档是否独立。
b)元素:
i.XML中的每个元素都是成对出现的(有开始,有结束),XML中的元素嵌套关系要保持正确性,即先开始的标记要先结束,后开始的标记要后结束。(结束标签不能省略)
ii.每一个XML文档都有且只有一个根元素(Root Element)。所谓根元素,就是唯一一个包含了所有元素的元素。
iii.XML文档中不会忽略回车,换行及空格和缩进。
c)属性:
i.XML元素可以具有属性,属性的形式为:属性名=“属性值”,
比如gender=“male”
ii.属性值一定要使用单引号或双引号括起来。多个属性之间使用空格分开。
iii.在一个元素上,相同的属性只能出现一次。
d)注释:<!--comments -->,注释是不允许嵌套。与HTML注释一样
e)CDATA区:是CharactersData的缩写。
i.作用:CDATA区中的内容都是文本
ii.语法格式:<![CDATA[文本内容]]>
f)处理指令(PI:Processing Instruction):
i.作用:用来指挥软件如何解析XML文档
ii.语法:必须以<?和?>来限定界限。
<?xml-stylesheet href=”mystyle.css” type=”text/css”?>
XML的基本约束:
1.格式正规(well formed)的xml文档。符合XML的语法要求的XML的文档就是格式正规的XML文档。
2.有效的(valid)XML文档。首先XML文档是个格式正规的XML文档,然后又需要满足DTD的要求,这样的XML文档成为有效的XML文档。即遵循约束规范的。
3.总结:格式良好的不一定是有效的,但有效的必定是格式良好的。
DTD约束
1.Document Type Definition(DTD,文档类型定义):
a)作用:约束XML的书写规范
b)DTD文件保存到磁盘时,必须使用UTF-8编码。
2.DTD的引入外部的DTD文档约束XML两种方式:
a)DTD文件保存在本地:<!DOCTYPE根元素名称 SYSTEM “DTD文件的路径”
b)DTD文件保存在网络:<!DOCTYPE根元素名称 PUBLIC “DTD名称” “DTD的URL路径”
例如:<!DOCTYPEweb-app PUBLIC
"-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
DTD文档的语法
1.定义元素:ELEMENT关键字
a)格式:<!ELEMENT 元素的名称使用规则>
i.(#PCDATA)(ParsedCharacter Data),可解析的字符数据。简易上说就是字符串
ii.EMPTY:指示元素的主体不能有主体内容。
iii.例如只能写:<tagname/>,而不能写<tagname>abc</tagname>
iv.ANY:用于知识元素的主体内容为任意类型
v.(子元素):指示元素中包含的子元素。
b)定义元素及描述它们的关系:
i.如果元素用逗号分开,,说明必须按照声明的顺序去编写XML的元素
ii.如果元素用|分开,说明任选其一,就是几个之中只能选一个
i.+:表示至少出现一次,一次或多次
ii.*:表示可有可无,零次或多次
iii.?:表示只能出现一次或零次,不能出现多次
iv.以上符号都没有,表示必须且出现一次
2.定义元素的属性(attribute)
语法:<!ATTLIST 那个元素的属性
注意:属性值之间不能用逗号。我门可以用空格各科i。
属性值类型:
a)CDATA:表示属性的取值为普通的文本字符串
b)ENUMEATED(DTD没有此关键字):
语法:<!ATTLIST 元素名称 (值1|值2) “值1”>
c)id:属性的取值只能唯一,不能重复
设置说明:
ii.# IMPLIED:表示该属性可以有,可以没有
iii.#FIXED “固定值” :不写的话就是默认值,写的话和必须和默认值一样
iv.直接值:什么设置关键字都没有,直接一个属性值。属性的取值是默认值,元素的元素不写时有默认值,写上的话和默认值不一样也不会出错。这点和#FIXED相反。
3.定义实体:ENTITY关键字。就是为一段文本内容指定一个名称,使用时通过这个名称就可以以引用其所代表的内容。类似键值对映射关系
a)XML中的实体引用(entityreference):
XML常用的预定义实体引用:
i.<小于(<)
ii.>大于(>)
iii.&(&)
iv."(引号)
v.&apos;(省略号)
自定义一个实体引用:
使用格式:<!ENTUTY 实体名 “实体值”>
调用方式:&引用名;(其实就是实体值)
例如:
<?xml version="1.0"?>
<!DOCTYPE company[
<!ENTITY liangshenghai "梁胜海">
<!ENTITY changshilu "长石路">
]>
<company>
<name>&liangshenghai;</name>
<address>&changshilu;</address>
</company>
b)参数实体:
例如:
<!DOCTYPEcompany[
<ENTITY%tagname "姓名|电话|地址">
<ELEMENT个人信息 (%tagname;|生日)>
<ELEMENT客户信息 (%tagname;|地址)>
]>
4.关于普通实体与参数实体(ENTITY)的区别:
1)普通实体是在dtd中定义,xml中使用,使用时候格式为:&address
2)参数实体是在dtd中定义,dtd中使用,定义的时候使用%,使用的时候也需要使用%,%address;
3)普通外部实体的定义方式是:
格式:<!ENTITYaddress SYSTEM http://www.baidu.com/xml.xml>
他表示使用http://www.baidu.com/xml.xml网址的内容来替换掉address,而不是使用http://www.baidu.com/xml.xml字符串本身来替换掉address。
4) 外部参数实体:
<!ENTITY % address SYSTEM “http://www.baidu.com/xml.xml”,
使用的时候:%address;
5.DTD的局限性:
a)DTD不遵守XML语法(即写XML是一种语法,写DTD却是另一种语法)
b)DTD数据类型有限
c)DTD不可扩展
d)DTD不支持命名空间
Schema约束的简单介绍
1.Schema(模式):其作用与dtd一样,也是用于验证XML文档的有效性,只不过它提供了比dtd更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个XML文件,而dtd则不是。
2.使用Schema的好处:
a)Schema基于XML语法
b)Schema可以能处理XML文档的工具去处理
c)Schema大大扩充了数据类型,可以自定义数据类型
d)Schema支持元素的继承
3.所有的Schema文档,其根元素必须为Schema。
4.SimpleType(简单类型)与ComplexType(复杂类型)的区别:
1) SimpleType类型的元素没有子元素,也没有属性。
2) 当需要定义的元素包含了子元素或者属性时,必须要使用ComplexType。
5.SimpleContent,用于ComplexType元素上,用于限定该ComplexType的内容类型,表示该ComplexType没有子元素,同时该ComplexType需要有属性,否则它就成为SimpleType了。
以后会专题讲解XMl的Schema,此待续。。。。。。。。。