前端之家收集整理的这篇文章主要介绍了
XML相关知识点,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1.xml概述 1.1xml:xml一种数据存储格式,这种数据存储格式在存储数据
内容的同时,还能够保存数据之间的关系 1.2xml保存数据的
方法:xml利用
标签来保存数据的
内容,利用
标签之间的嵌套关系来保存数据之间的关系。 1.3xml的应用场景: 1.3.1利用xml跨平台的特性,用来在不同的操作系统不同的开发语言之间传输数据。如果说java是一门跨平台的语言,那xml就是跨平台的数据。 1.3.2利用xml可以保存具有关系的数据的特性,还常常被用来做为
配置文件使用。, 1.4xml
文件:把xml格式的数据保存到
文件中,这样的
文件通常起后缀名为.xml,这样的
文件就叫做xml
文件,xml
文件是xml数据最常见的存在形式,但是,这不是xml的唯一存在形式(在内存中或在网络中也可以存在),不要把xml狭隘的理解成xml
文件。 1.5xml校验:浏览器除了内置html解析引擎外还内置了xml解析器,利用浏览器打开xml格式的数据,就可以进行xml校验。 2.xml语法 2.1文档声明:一个格式良好的xml必须包含也只能包含一个文档声明,并且文档声明必须出现在xml文档第一行,其前不能有其他任何
内容。 2.1.1最简单的写法:<?xml version="1.0" ?>其中的version代表当前xml所遵循的规范版本。 2.1.2使用encoding
属性指定文档所使用的字符集编码:<?xml version="1.0" encoding="gb2312" ?> 注意:encoding
属性指定的编码集和xml真正使用的编码应该一致,如果不一致就会有乱码问题。 encoding
属性默认值为老外喜欢的iso8859-1 2.1.3使用standalone
属性指定当前xml文档是否是一个独立文档:<?xml version="1.0" standalone="no" ?>,standalone默认值为yes表示是一个独立文档。 注意:很多的解析器会忽略这个
属性,但是学习知识要按标准去学,所以这个
属性也要掌握。 2.2元素 2.2.1元素分为开始
标签和结束
标签,在开始
标签和结束
标签之间的文本称为
标签体,如果一个
标签即不含
标签体也不包含其他
标签,那这样的
标签可以把开始
标签和结束
标签进行合并,这样的
标签叫自闭
标签。 <a>xxxxx</a> <a/> 2.2.2一个元素也可以包含若干子元素,但是要注意所有的
标签都要进行合理嵌套。 2.2.3一个格式良好的xml文档应该具有并且只能有一个跟
标签,其他
标签都应该是这个跟
标签的子孙
标签。 2.2.4元素的命名规范: 区分大小写,例如,<P>和<p>是两个不同的
标记。 不能以数字或
标点符号或"_"开头。 不能以xml(或XML、或Xml 等)开头。 不能包含空格。
名称中间不能包含冒号(:) 2.3
属性 一个元素可以包含多个
属性,
属性的值要用单引号或双引号括起来。如果
属性的之中包含双引号,就要用单引号了。
属性的命名规范,参照元素的命名规范。 2.4注释 <!--这是一段注释--> 注意:注释不能出现在文档声明之前。实验:把注释写到文档声明之前,用ie打开是没问题,但是用chrome打开是报错的。这就看出来了不同的解析器有不同的处理,我们学习的时候还是按标准去学。 注释不能嵌套注释 2.5CDATA区、转义字符 都可以用来转义特殊字符。 2.5.1CDATA区<![CDATA[这是要转义的
内容]]> 被CDATA区扩起来的
内容,将会被浏览器当作文本来处理。 2.5.2转义字符 & --> & < --> < > --> > " --> " ' --> ' 2.5.3CDATA区和转义字符的区别 (1)CDATA区可以成段的进行转义,而转义字符一次只能转义一个字符 (2)CDATA区转义的字符可以保存数据本来的格式只是
通知解析器按文本去处理。转义字符改变了数据本身的
内容,利用其他字符替代了转义字符。请思考,如果要转义的
内容是一段js程序的话,如果用转义字符合适不合适? 2.6处理指令:一段指令
通知解析器以何种方式解析xml <?xml-stylesheet type="text/css" href="1.css" ?>指定解析器使用1.css去渲染当前的xml数据 其实文档声明就是一个最常见的处理指令。 3.DTD技术 3.1DTD是一门xml约束技术,用来约束xml写法。 3.2如何在xml中引入一个DTD 3.2.1外部引入:dtd约束
文件存在在一个外部
文件中,我们在xml中引入该约束。 (1)本地
文件引入:该dtd
文件存在在本地硬盘中 <!DOCTYPE 根元素的
名称 SYSTEM "
文件所在的路径"> (2)公共位置
文件引入:dtd约束
文件存在在一个公共网络上,我们在xml引入该约束 <!DOCTYPE 根元素的
名称 PUBLIC "dtd
名称" "dtd所在的URL"> 3.2.2在xml内部写dtd约束 在文档声明下<!DOCTYPE 根元素
名称 [dtd约束的
内容]> 3.3利用dtd约束xml中的元素 <!ELEMENT 元素
名称 元素约束> 3.3.1元素约束 (1)存放类型 ANY:当前声明的元素可以包含任意子元素 EMPTY:当前声明的元素不能包含任何元素 (2)存放
内容:利用小括号括起来的元素的
名称,用来表示该元素中可以存放哪些
内容 <!ELEMENT "元素名" (可以包含的元素的
名称)> 小括号中的
内容,可以有多个子元素的
名称 如果用“,”分割这些子元素就表明这些子元素必须按指定的顺序出现 如果用“|”分割这些
内容就表明这些子元素只能出现其中之一 使用“+”来表明
内容可以出现一次或多次 使用“*”来表明
内容可以出现零次或多次 使用“?”来表明
内容可以出现零次或一次 #PCDATA表明该元素可以包含
标签体 可以利用()进行组操作: <!ELEMENT MYFILE ((TITLE*,AUTHOR?,EMAIL)* | COMMENT)> 3.4利用dtd约束xml中的
属性 <!ATTLIST 元素名
属性名
属性类型
属性约束 。。。。> 3.4.1
属性类型 (1)CDATA:表明该
属性的值是一个普通的文本值。 (2)ENUMERATED:表明该
属性的值只能取指定范围内的其中之一 (3)ID:表明该
属性值在整个文档中必须唯一,注意ID类型的
属性的值必须以字母下划线开头,并且不能以数字开头,不能包含空白字符 3.4.2
属性约束 (1)#
required 来表明当前这个
属性是必须存在的
属性 (2)#IMPLIED 来表明当前这个
属性是可选的
属性 (3)#FIXED "固定值" 来表明当前这个
属性具有一个默认的值,可以不明确指定该
属性,解析器会帮你
加上,如果你硬是指定了一个其他的值,会出错。 (4)"默认值" 来表明当前
属性具有一个默认的值,如果给这个
属性指定一个值就用指定的值,如果不指定呢,就使用默认值。 3.5实体:可以理解为对一段
内容的引用,如果有一段
内容到处在被使用,可以将其设计为一个实体 3.5.1引用实体:用在xml中的实体 声明实体:<!ENTITY 实体
名称 "实体
内容"> 引用引用实体:&实体
名称; 3.5.2参数实体:用在DTD
文件中的实体 声明实体:<!ENTITY % 实体
名称 "实体
内容"> 引用参数实体: %实体
名称;