XML作用:1,数据存储 2,数据传输 3,数据配置 4,
语法:
* 文档声明 --- 一看就会
<?xml version="1.0" encoding=”UTF-8” ?>
*** 注意事项
* 文档声明必须出现在XML文档的第一行第一列的位置.
文档声明的属性:
* version:代表xml使用版本. 1.0 属性是必须的.
* encoding:字符集编码. 编码集: GBK GB2312 UTF-8 ISO-8859-1 属性是可选的。
* standalone:代表XML文档是否是独立存在. yes/no 属性是可选的。
***** 因为WEB开发时候 乱码一致跟随.
* 元素就是标签:
* 标签有开始 必须 有结束.
* 写法:
<tag>元素</tag> 2,<tag></tag> 或<tag/> 3,标签必须合理嵌套.<a><b></a></b>是错误的 4,只有一个跟节点.
* 命名规范:
* 区分大小写
* 标签名 不能以 数字 或 _ 开头 错误的:<1a> <_b>
* 不能以XML xml Xml开头.
* 标签名中间不能出现空格或冒号 错误的: <a b> <a:b>
* 属性:重要
* 一个标签上 可以有多个属性.
* 属性不能同名.
* 属性一定要加引号(单引号或双引号.)
* 命名与标签的名称一致.
* 注释:不看都会.
* 与HTML的注释一致:<!-- 注释 -->
* 注意:注释不能嵌套. 注释能否放在XML的文档声明之前? 不行.
* CDATA和转义字符 一看就会
转义字符:
< <
> >
" "
& &
' '
CDATA区:字符数据 Character Data:字符数据.
* 写到标签中特殊字符.不会认为是标签了 而认为是一段字符串.
* 语法:
<![CDATA[
写在CDATA区的内容.
]]>
* 在XML中引入CSS 可以 给XML加样式.
* XML出现替换HTML. 但是没有替换掉. 而XML语法比HTML复杂. XHTML:过度产品 W3C把HTML升级 HTML5
XML约束:
***** (面试)XML的约束有哪些?区别是什么?
* 两种:DTD 和 Schema.
DTD:约束XML文档.
* 浏览器只负责解析XML 不负责XML语法校验.
DTD使用的步骤:
* DTD保存为UTF-8格式.
* 1.看XML文档中 想出现标签.
* 2.在DTD中定义标签.
<!ELEMENT 元素名称 元素内容>
* 3.查看标签中是简单的还是复杂.
* 如果是简单标签. (#PCDATA)
* 如果是复杂标签. (子标签)
* 4.在XML中引入DTD.
* <!DOCTYPE 跟元素 SYSTEM "DTD的路径.">
DTD详解:(会写 关键是能够看懂...)约束XML
XML与DTD的关联:引入DTD
* XML文档内部 (在XML文件内部)
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书)>
<!ELEMENT 书 (书名,作者,售价,简介)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
<!ELEMENT 简介 (#PCDATA)>
]>
* XML的约束文档DTD 在本地的一个文件从存在 (引入本地的DTD)
<!DOCTYPE 书架 SYSTEM "DTD路径">
* XML可以引用网络上的DTD (引入网络DTD )
<!DOCTYPE 跟元素 PUBLIC "DTD名称" "DTD路径">
DTD语法:
* 定义元素
* 语法:
<!ELEMENT 元素名称 元素类型>
* 元素类型:
(#PCDATA): 可解析字符数据
EMPTY: 空元素
ANY: 任意元素
(子节点):
* 子节点的关系:
, : 子元素出现是有顺序的.
| : 子元素出现是或的关系.
* 子节点出现的次数:
+ : 子元素出现1次或多次.
* : 子元素出现0次或多次.
? : 子元素出现0次 或 1次.
案例:<!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
* 定义属性:AttributeList
<!ATTLIST 元素名称
属性名称 属性类型 属性约束
属性名称 属性类型 属性约束
>
属性类型:
CDATA :字符数据
枚举 :从某个范围取值.
ID :唯一.
属性约束:
#REQUIRED :属性是必须的
#IMPLIED :属性是可选的
#FIXED :属性是固定值
默认值 :属性是默认值
* 定义实体
在XML经常会使用的一段内容 可以使用一个名称来代替.
定义一个实体.
<!ENTITY 实体名称 实体值>
在页面中引用实体:
&实体名称;
XML的解析: (*****) 程序员代码.
***** XML的解析技术有那些?区别是什么?
解析技术有很多.但是常用的 DOM 和 SAX。
DOM:将文档一次加载到内存 形成树形结构 . 很方便的做元素的增删改的操作.但是如果文档非常大 容易导致内存的溢出.
SAX: 事件驱动的方式,边读边解析.如果文档很大不会导致内存溢出 但是不能做增删改的操作.
Schema约束.(看懂.) *** 名称空间.
* DTD和Schema对XML进行约束.
(面试题:)XML的约束技术有哪些?区别是什么?
* DTD和Schema.
* 区别:
* Schema本身语句是XML
* 由于是XML语法可以很容易被解析器所解析.
* 它可以做出更加严格的语义和语法约束.
* Schema支持名称空间.
* 开发Schema文档的步骤:
* 1.看XML文档中出现了哪些标签.(6个)
* 2.需要引入W3C预定义的标签和属性 开发文档.
* 3.定义元素.使用<element>标签定义元素.
* <element name="书架"></element>
* 4.看元素类型:简单类型 还是 复杂类型.
* 5.如果是简单数据类型 在element标签中使用type属性指定类型.
* <element name="书名" type="string"></element>
* 6.如果是复杂类型:使用<complexType>
* 7.如果在复杂元素中出现的是有顺序的,使用<sequence>
* XML文档的开发步骤:
* 在跟节点上引入W3C的.
* 引入自定义的Schema.
* Schema的名称空间:(*****)
* 名称空间是用来 区分多个Schema中定义的重名的问题.
* 一个XML引入一个DTD文档 但是 可以引入多个Schema文档.
* 名称空间可以想象为是Java中包,区分类名重名的问题.
* 名称空间只能有一个是默认的.默认的名称空间可以不写前缀(在默认名称空间下的元素也可以不写前缀.).