首页 > 代码库 > XML概念,约束文档,解析 笔记

XML概念,约束文档,解析 笔记

XML的学习:
1.XML简介及语法:
2.XML的约束:
DTD
Schema
3.XML的解析:(*****重点)
XML:
What:eXtensible Markup Language(可扩展的标记语言。) <dog></dog>
* HTML:超文本标记语言. 标记语言 :都会有一些标签。<html></html> <p></p>
Why:
* 用来处理大量有关系的数据。

Where:
* 用来作为软件的配置文件(SSH---配置文件都是XML)
* 用来存储数据(当做一个小型的数据库)
* 用来异步系统传输数据.

How:

XML的语法:
文档声明:(一看就会)
* 注意:文档声明出现的位置。xml的第一行 第一列的位置.
<?xml version="1.0" ?>
version:版本 1.0 而且 version属性是必须的.
encoding:编码集 可选的属性
standalone:是否需要依赖其他的文档. yes/no

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
元素:(重点)
元素:标签。
标签的写法:
<span></span> <img/>
标签的嵌套:
必须正确嵌套
<a><b></a></b> ---错误的
<a><b></b></a> ---正确的

XML必须有且仅有一个跟标签.

元素命名规范:
* 区分大小写.
* 不能以数字或_开头
* 不能以xml XML Xml开头.
* 元素名称中间不能出现 空格 或 冒号

<a> <person> ...
属性:(重点)
<input type="" name=""> input:元素(标签) type 和 name 都叫做属性

<input>
<type></type>
<name></name>
</input>
注释:(不看都会)
注释:<!-- 注释内容 -->

***** 注意 : 注释中不能嵌套注释。 注释不能写在文档声明之前.
特殊字符和CDATA区:(一看就会)
转义字符:
<span>3<5</span>
< &lt;
> &gt;
& &amp;
" &quot;
‘ &apos;

CDATA区:--- 扩起来东西:不会认为是标签,认为是普通的文本(字符串).
<![CDATA[ 认为是普通的文本 ]]>

* 写法 <![CDATA[ ]]>

处理指令(PI):(看完就忘了)
* <?xml-stylesheet type="text/css" href="http://www.mamicode.com/1.css"?>

XML出现替换HTML :由于XML的语法比较复杂. XHMTL ---- HTML5 ---
===================================================================================================================
开发一个框架:
配置文件:文件有什么好处:就是不需要修改程序的源代码.
properties:作为软件配置文件.
key=value ----形式的文件.
com.login.=cn.itcast.Test

xml:作为软件的配置文件.
xml可以更好的描述 层次关系.
<web-app>
<servlet>
<servlet-name></servlet-name>
</servlet>
</web-app>

因为是xml是可扩展的标记语言
<web-app>
<servlet>
<cat></cat>
<servlet-name></servlet-name>
</servlet>
</web-app>

XML的约束:DTD 和 XML Schema(看懂为主)
(***** XML的约束有哪些?区别是什么?)

遵守了XML语法的写法的XMl :格式良好的XML.
遵守了XML的语法 遵守了约束文档定义: 有效的XML

DTD:文档类型定义:
使用DTD约束XML的文档。快速入门.
编写DTD的步骤:
1.xml文档中需要出现哪些标签、个数是多少?6个
<!ELEMENT 元素名称 元素类型>
2.查询xml元素中,类型是什么.
简单or复杂
3.需要在xml中引入dtd.

DTD的引入的方式:
文档内部
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价,简介)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
<!ELEMENT 简介 (#PCDATA)>
]>
文档外部
* 本地
<!DOCTYPE 书架 SYSTEM "book.dtd">
* 网络
<!DOCTYPE 书架 PUBLIC "DTD的名称" "DTD路径">

DTD的语法:
元素的定义
语法:<!ELEMENT 元素名称 元素类型>
元素的类型:
#PCDATA :可解析的字符数据
子元素 :
EMPTY : 空元素
ANY :任意元素

子元素的次数
+ : 一次或多次
* : 零次或多次
? : 零次或一次
子元素的顺序
, : 子元素出现必须按照顺序.
| : 子元素出现是或的关系.
属性的定义: attribute--属性
语法:<!ATTLIST 元素名称 属性名称 属性类型 属性约束>
* <!ATTLIST 书 出版社 CDATA #REQUIRED>

属性类型:
CDATA :字符数据(字符串)
枚举 :枚举类型
ID : 标识是唯一

属性约束:
#REQUIRED : 属性必须出现.
#IMPLIED : 属性是可选的.
#FIXED : 属性采用固定值.
默认值 :
实体的定义
语法:<!ENTITY 实体名称 实体值>
<!ENTITY bookname "葵花宝典">
===================================================================================================================
XML的编程(重点....) CRUD
XML的解析技术?
(*****XML的解析技术有哪些?区别是什么?)
***** XML的解析技术有很多 常用的有两种 DOM 和 SAX。
DOM:Document Object Model 文档对象模型 . 将XML一次性加载到内存中,形成一个树形结构.
SAX:Simple API for XML.不需要将文档一次性加载到内存中,边读边解析,事件驱动的方式.

JAXP: SUN公司。提供的API。
1.创建一个XML的解析器.
2.使用解析器解析XML --- Document.
3.使用Document获得操作的节点.

CRUD.

SAX:事件驱动的方式.边读边解析.
//创建解析器
//处理器.
***** DOM4J: 开源组织. (重点)

XPath: 方便查询XML的节点. dom4j支持XPath.

JDOM: 开源组织.

 

XML概念,约束文档,解析 笔记