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里面,用实体表达。
实体都是用&开头,用;结尾。有五个常规实体。
< 表示< > 表示> & 表示&自己 " 表示” ' 表示’
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
XML学习总结
猜你喜欢
转载自blog.csdn.net/slowly_man/article/details/78006339
今日推荐
周排行