XML 总结

一、概述

  • XML是一种通用的数据交换格式
  • 许多系统配置文件(记录应用程序的配置信息)
  • JSP文档逐步向XML语法格式过渡
  • 与HTML
  • ** 与数据库**
  • XML文档的组成单元
    XML声明(declaration)
    DOCTYPE声明语句
    处理指令(processing instruction)
    元素(element)
    注释(comment)
    CDATA区

二、基本语法

2.1 文档声明

必须的,第一行

前后'?xml'与'<'间不能有空格,目前只有版本1.0,但必须写
<?xml version="1.0" ?>   

encoding属性说明文档的字符编码,如果没有则默认UTF-8(UTF-16),GB2312是国标的,实际保存和此处要统一,不然会报错
<?xml version="1.0" encoding="GB2312" ?>

standalone属性说明文档是否独立
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>

2.2 元素定义

使用'<>'和'</>'定义,一个元素可以嵌套多个元素,第一个元素为根元素,只能有一个,
空元素如<img />,标签之间不允许交叉

规范,区分大小写,不能以数字下划线开头,不能含有xml组合字符,不能包含‘:’
建议,不要用点、下划线,尽量简短,大小写统一,使用中文需谨慎

2.3 属性定义

属性值必须用双引号或单引号,可以改写成子元素描述,遵循元素相同的命名规范

2.4 注释

和HTML完全一样
xml声明之前不能有注释
注释符号不能相互包含
注释同样要注意编码

2.5 空格和换行处理

标签以外的所有空格和换行,都要交给下游程序处理

2.6 CDATA区

“<![CDATA[” 开始,“ ]]>”结束

<script type="text/javascript">
<![CDATA[       for(var x=0;x<3;x++)
                         {
                                  alert(x);
                         }
]]>
</script>

2.7 特殊字符

特殊字符 替代符号
& &
< <
> >
" "
' '

2.8 处理指令

简称PI,用来为处理XML文档的应用程序提供指示信息
处理指令以“<?”开头,以"?>"结尾,XMl声明语句就是常见的处理指令
XML分析器会把处理指令原封不动的传给应用程序,由应用程序来解释这个指令

例如:book.xml

<?xml version="1.0" encoding="GB2312" ?>
<?xml-stylesheet type="text/css" href="book.css" ?>
             <bookstore>
                  <book>
                         <bookname>Java教程</bookname>
                         <author>李华</author>
                         <price>99元</price>
                  </book>
            </bookstore>

book.css

    bookname{display:block; color:red}
    author{display:block; font-style:italic}
    price{display:block; color:olive}

三、XML约束模式

3.1 格式良好的XML

解析器Parser

3.2 XML的约束模式

虽然解析不会出错,但不符合真实的逻辑,所以要有约束模式
定义文档中允许出现的元素名、属性、内容以及嵌套关系和出现顺序

定义Xml文档的词汇表,尊徐的结构
xml文档看做数据库中的表,则约束模式相当于表结构的定义

3.3 XML的约束语言

定义另一种语言的语言为元语言,单独的文件,模式文档,xml文档实例文档
约束模式语言,XML DTD、XML Schema、XDR、SOX等,前两种最广泛

3.4 有效的XML

遵守XML基本的语法规则,而且符合指定的约束模式,称为Valid XML
解析器程序检查是否符合约束模式称为校验,因此非校验类解析器和校验类解析器,IE是非校验类解析器

3.5 DTD

Document Type Definition,早期的约束模式语言

  • DTD初步认识

包含元素,元素之间关系,属性、实体以及符号的定义
book.dtd,可以使用正则表达式,使用UTF-8,unicod编码

 <!ELEMENT 书架 (书+)>                  
   <!ELEMENT 书 (书名,作者,售价)>
   <!ELEMENT 书名 (#PCDATA)>
   <!ELEMENT 作者 (#PCDATA)>
   <!ELEMENT 售价 (#PCDATA)>
PCDATA代表普通的字符串,(书名,作者,售价)按这个顺序, (书+)出现多次
  • 在xml文档中引入外部的DTD
    DOCTYPE文档类型定义语句,紧跟xml文档声明语句后面,两种格式
自定义:SYSTEM组织内部,或自定义
<!DOCTYPE 文档类型名称 SYSTEM "DTD文件的的URL">
公共的:PUBLIC权威机构公开的文件
<!DOCTYPE 文档类型名称 PUBLIC “DTD名称” "DTD文件的的URL">

例如:
<!DOCTYPE 书架 SYSTEM "book.dtd">
<!DOCTYPE web-app PUBLIC “-//Sun Miorosystems, Inc.//DTD Web Application 2.3//EN” "http://java.sun.com/dtd/web-app_2.3.dtd">
“-”表示未被改进的非ISO标准的DTD,“+”表示被改进的非ISO标准的DTD

例如book.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
.....
</书架>
standalone即使为no,只要DOCTYPE声明,也会去校验
  • xml文档中直接嵌入DTD
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 根元素名 [
     DTD定义语句
    ...
]>

四、相关定义

4.1 元素定义

  • 语法格式:
    <!ELEMENT 元素名称 使用规则>
  • 举例:
    <!ELEMENT 书架 (书名,作者,售价)>
    <!ELEMENT 书名 (#PCDATA)>
  • 使用规则:
    (#PCDATA) 是parsed character data简写,表示可以是普通字符串
    (书名,作者,售价)
    (书名,#PCDATA)
    EMPTY 内容为空,如<HR />
    ANY 元素内容任何形式

PS:
a、DTD注释和XML文档一样
b、每条元素定义语句顺序随意
c、具有不同用途的元素不能使用相同的元素名
d、一个元素的各个组成成分之间可以有各种关系
<!ELEMENT MYFILE (TITLE AUTHOR EMAIL)> 三个子元素顺序任意
<!ELEMENT MYFILE (TITLE, AUTHOR ,EMAIL)> 三个有序的子元素
<!ELEMENT MYFILE (TITLE |AUTHOR| EMAIL)> 三个中的任意一个
e、在元素的使用规则中可以定义子元素出现的次数
(书+)一次或者多次,(书?)一次或者不出现,(书)不出现或者一次多次,(书)只能一次
f、一对圆括号可用于将括在其中的内容组合成一个可统一操作的分组,分组中可以嵌套更小的分组
<!ELEMENT MYFILE ((TITLE
, AUTHOR?,EMAIL)*|COMMENT)>

4.2 属性定义

  • 语法格式
    <!ATTLIST 元素名
    属性名1 属性类型 设置说明
    属性名2 属性类型 设置说明
    ...
  • 举例
    <!ATTLIST 商品
    类别 CDATA #REQUIRED
    颜色 CDATA #IMPLIED
  • 设置说明
    REQUIRED 必须设置
    IMPLIED 可有可无
    FIXED 设为固定值,如:CDATA #FIXED “页面作者”
    直接使用默认值 如:CDATA “上网”
  • 属性类型
    CDATA 普通文本字符串,特殊字符用转义字符串
    ENUMERATED 枚举类型
    ID用于标示唯一的,相当于KEY
    IDREFIDERFSNMTOKENNMTOKENSNOTATIONENTITYENTITYS

4.3 实体定义

  • 作用 为一段文本内容创建一个别名,,在XML中多次引用这个别名,解析器会自动把别名转为对应的文本
  • 定义 DTD中用<!ENTITY...>定义,两种类型:引用实体和参数实体

引用实体:DTD中定义,xml中引用
<!ENTITY 实体名称 “实体内容”>
<!ENTITY 实体名称 SYSTEM "外部XML文档的URL">
引用方式:&实体名称;

参数实体:DTD中定义,DTD中引用
<!ENTITY % 实体名称 “实体内容”>
引用方式:&实体名称;

五、XML Schema

5.1 XML Schema与DTD的比较

和DTD一样,定义xml文档结构,比DTD更有发展前途。

  1. 自身符合xml语法结构
  2. DOM 、SAX等XML API更容易解析
  3. 采用和xml文档同样的合法性验证机制
  4. 对名称空间更好的支持
    5.比DTD支持更多的数据类型,并支持用户自定义数据类型
  5. 定义约束的能力更强大
  6. 基本上满足了关系模式在数据描述上的需要
    缺点:不能像DTD定义实体,很多细节比DTD更复杂

5.2 通过一个例子初步认识XML Schema

5.3 名称空间的概念

5.4 名称空间的声明

5.5 默认名称空间

5.6 属性的名称空间问题

5.7 引入XML Schema文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1. XML简介 以下内容来自于http://www.w3school.com.cn/xml 基本知识 XML 和...
    WebSSO阅读 1,894评论 1 7
  • 经过两天的奋战,终于把xml简略的过了一遍。 1.1XML介绍 xml是Extensible Markup lan...
    Ystrator阅读 801评论 0 2
  • 什么是约束? 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这就是XML约束。约束定义了文档的结...
    tobe_superman阅读 778评论 0 3
  • 我的钢琴调音师是个台湾人,名叫王文星,看这个名字,大概是没有文化的父母,希望孩子读点书,摆脱贫穷。他今年五十六岁了...
    一条小鱼两条小鱼阅读 1,006评论 4 4
  • 幼儿园开学第一天,一对父子在幼儿园门口极有吸引力。父亲拍拍儿子的头声音细腻的说:“好好听课,别让你爸爸担心。”“知...
    邯夙阅读 251评论 2 5