XML学习总结

XML

HTML   固定若干个标签,每个标签都有固定的名字、属性等

 

XML    extended  Markup  Language

它的做法是,只指定标签的规则,标签内容自己写。

EDI、VoiceXML

 

一个完整的XML文件由如下几个部分组成:

1、XML声明:必须是XML文件的第一个行。<?xml  ?>  中间是属性。每个属性都是  名字=”值” 组成。值必须写在字符串里面。

version:意思是版本号,只有一个值,1.0    version=”1.0”

encoding:意思是编码  GB2312  GBK GB18030   UTF-8  中文  编码和文件的保存格式要一致。

 

2、注释: <!--  --> 不能嵌套,里面不准出现 --

 

3、标签

用<开头,用>结尾,就算一个标签。里面的文字叫标签名,可以带属性。

分为两种:单标签和双标签。

单标签:由自己的<开始,由自己的/>结束。有标签名和属性。

双标签:由一对标签组成,<标签名>叫 开始标签, </标签名>叫结束标签。

1、开始标签和结束标签的标签名相同,包括大小写。

2、可以有属性,必须写在开始标签里面。

3、开始标签和结束标签之间,叫标签体。里面可以放任何内容,包括其他标签。

4、XML允许标签层层嵌套,但是不允许交错。

5、整个XML文件由一个标签组成,这个标签叫根标签,其他内容(除了声明和注释)都写在根标签的标签体里面。

 

4、有些符号是特殊的,不能直接写在XML里面,用实体表达。

实体都是用&开头,用;结尾。有五个常规实体。

&lt; 表示<   &gt; 表示>  &amp; 表示&自己  &quot; 表示”   &apos; 表示’

 

5、CDATA   <![CDATA[ 内容写在这里 ]]>

6、属性。 名字=值  值必须是字符串,必须用双引号或单引号括起来。只能写在单标签或开始标签里面。

 

XML的用途:

1、网络上传输数据  数据传输标准

2、用作保存数据。不安全  冗余数据多,浪费  解析、查询、处理都很慢

3、用作程序接口  Web Service 跨语言程序调用  语言中立

4、用于系统配置  各种软件、开发工具、各种规范、各种框架  都喜欢用XML做配置文件。

 

XML规范:一个合格的XML文件有些什么要求?

1、整个文档应该由:声明、注释、标签、实体、属性和普通文字组成。

2、声明只能有一个,放在文件第一行。

3、注释可以有任意个,不准嵌套,内部不能出现--,不能在声明前面。

4、标签必须层层嵌套,不允许交叉,整个文档必须由一个标签构成,其他内容都在这个标签内部,这个叫根标签。

5、标签分为单标签和双标签,单标签没有标签体,在结束的>前写/。双标签由开始标签和结束标签组成,开始标签和结束标签名字相同,结束标签在<后面写/。

 

进一步的约束:指定XML文件允许使用什么标签、用什么顺序、每个标签允许出现几次

DTD

Schema

 

DTD是一种技术,写在什么地方,怎么应用,有三种做法:

1、直接把DTD写在XML文件内部  内部

在XML文档的声明和根标签之间,写<!DOCTYPE>

<!DOCTYPE  根标签名  [ 各种约束]>

2、单独写成DTD文件,引入到XML里面  外部

单写DTD文件,只需要写各种约束

<!DOCTYPE  根标签名SYSTEM  “DTD文件所在” >

3、把DTD文件放在网站上,允许任何XML文件引用  公开

<!DOCTYPE  根标签名PUBLIC  “DTD名称”  “DTD文件网址”>

 

约束规则:

1、<!ELEMENT>  表示约束标签

标准格式:<!ELEMENT  标签名  (规则)>

规则:规定的是标签的内容,也就是标签体部分的规则。

EMPTY  这是一个空标签,要么是单标签,要么是双标签但是标签体没有任何内容。

ANY    这个标签的内容随便写,包括标签,标签必须在DTD里面有定义

#PCDATA  这个标签的内容只允许纯文本,不能有子标签

其他   都算是子标签的名字 符号:

()   表示括号里面的内容自成一组。

,    表示顺序,多个子标签用逗号隔开。

|   表示N选一

+   至少出现一次,可以出现N次

*   至少出现0次,可以出现N次

?   至少出现0次,最多出现1次。

子标签后面什么都没写,表示只会出现一次。

 

2、<!ATTLIST>  表示约束属性

标准格式:<!ATTLIST  标签

属性名  数据类型  默认值

数据类型:

CDATA  普通文字

ID      唯一值,不能是纯数字

IDREF或IDREFS   要引用别的标签的ID,S表示允许引用多个,空格隔开。

ENTITY或ENTITIES  是一个实体

NMTOKEN或NMTOKENS   类似于CDATA,但是只能是字母、数字、点、破折号、下划线和冒号,S表示允许出现多个值,用空格隔开

(N个值,用|隔开)    枚举  也就是N选一。

默认值:

#REQUIRED  表示必填项,这个属性必须写,必须有值。

#IMPLIED    表示可选项,这个属性可以写,可以不写,不写的话,这个属性的值是NULL

#FIXED  值   表示这个属性只能有固定的值。

“值”    表示这就是默认值,这个属性可以不写,不写表示这个属性的值就是这个默认值。要用双引号或单引号括起来

 

3、<!ENTITY>  表示实体定义  变量

标准格式:     <!ENTITY 实体名  值>

两种做法:

<!ENTITY  writer  “张三” >

在XML文件里面,可以写&writer;引用这个实体。

 

<!ENTITY  writer  SYSTEM “XML网址或路径” >

在XML文件里面,可以写&writer;引用这个实体,相当于把另一个XML文件引入到当前XML里面

 

DTD特点:

1、它是对XML格式的一个增强的约束。

2、DTD是一个自定义的格式,本身并不符合XML语法。

3、DTD约束是一个比较粗略的约束,数据类型不足

4、DTD约束的标签,顺序是固定的

 

schema:是微软推广的一种格式,已经被W3C采用,已经是国际标准。

1、DTD自己不是XML格式,schema本身是XML文件

2、DTD的数据类型很弱,Schema的数据类型更详细更强大

3、DTD的标签顺序是固定的,Schema可以固定也可以灵活

 

XML文件扩展名是.xml

Schema文件扩展名是.xsd

两部分如何结合?

1、XML文件的根标签上,写xmlns=””  xmlns:xsi=”” xsi:schemaLocation=””

2、xmlns 就是名字空间  任意写   最好写成网址

3、xmlns:xsi  固定值,照书抄

4、xsi:schemaLocation  两段空格隔开,第一段是名字空间 第二段是schema文件名

 

1、怎么写schema?

用XMPLSpy软件写,效率高,错误少。 保存时做检查。

 

2、xsd:element 代表一个元素(标签、节点)。每个元素都必须有名字,xsd用name属性约束XML元素的名字。

 

3、xsd:element 有两种,一种叫简单元素(元素内部不再有子元素),一种叫复杂标签(元素内部嵌套有子元素)。如果是简单元素,可以通过type属性,指定元素的内容规则。

 

4、如果是复杂元素:就必须不写type属性,而是在xsd:element里面写xsd:complexType;在xsd:complexType里面,可以写xsd:all  xsd:sequence xsd:choice,在这些里面可以继续写xsd:element,表示复杂元素里面有子元素。

xsd:all里面的子元素不在乎顺序

xsd:sequence里面的子元素严格按照顺序出现。

xsd:choice 里面的子元素只能N选1  可以出现在sequence里面

 

5、xsd:element 有minOccurs——表示最少出现几次,默认1,可以选择0。maxOccurs——表示最多出现几次,默认1,大小无限。 

xsd:all

minOccurs

0或1  表示最少0个或一个。

maxOccurs

0或1  表示最多0个或一个。

xsd:sequence

minOccurs

0以上任何数字,或unbound  最少能出现几次

maxOccurs

0以上任何数字,或unbound  最多能出现几次

xsd:choice

minOccurs

没有这两个属性

maxOccurs

 

6、xsd:schema里面,可以写多个节点定义(xsd:element),一般情况下,只有第一个是根节点。其他都是非独立节点,可以自由定义。在根节点里面定义子节点的时候,可以引用非独立节点。引用的语法是<xsd:elementref=””>

 

7、简单标签还有一种写法:

不写type属性

在里面写xsd:simpleType

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值