xml第一天

##XML学习
xml - Expansible Mark Language 可拓展性语言,主要用处:1、用于描述关系 2、作为配置文件
(最初是w3c想让其替代html,然而并没有)

xml的重要组成部分:1、文档声明 <?xml version=”1.0” encoding=”UTF-8” standalone=”no” ?>
version=”1.0”//遵循的版本号
encoding=“UTF-8”//文档编码格式
standalone=”no”//是否独立存在,no代表不独立,但是IE浏览器仍然可以打开,是没有遵循xml的规范,忽略了这个属性

注意:这里主要涉及到的是“乱码”问题。

2、元素(1):xml元素指xml文件中出现的–标签。element,标签分为开始标签和结束标签,还有1、包含标签体的标签 2、不包含标签体的标签。

标签中也可以嵌套若干子标签,但是不能随意嵌套,必须合理配对。

格式良好的xml文档必须有且只有一个根标签,其他的标签都是这个标签的子孙标签。

元素(2):对于xml标签中出现的所有空格和换行,xml解析都会当作标签内容进行处理。例如:

<网址>www.baidu.com</网址>

<网址>
    www.baidu.com
</网址>

上面两种意义是不一样的。所以编写xml文件时,换行和缩进的方式的“良好”书写习惯可能要被迫改变。

元素(3):命名规范
一个xml元素可以包含字母、数字以及其他一些可见字符,但是必须遵守规范:1、区分大小写,如

是不同的两个标记。2、不能以数字或“_”(下划线)开头。3、不能以xml(或Xml,XML等)开头。4、不能包含空格。5、中间不能包含冒号(:)。

3、属性:·一个标签可以有多个属性,每个属性有自己的命名和取值,如:
·属性值一定要有双引号(“”)或单引号(‘)引起了。
·定义属性必须遵循与标签相同的命名规范
·多学一招:在xml技术中,标签属性所代表的信息,也可以被改成用子元素的形式描述,例如:

<input>
    <name>text</name>
</input>

4、注释:xml文件中的注释采用:
(1)xml声明之前是不允许有注释的。
(2)注释不能嵌套。 –> 这样是有问题的。

5、CDATA区:
编写xml文件时,不想被解析引擎解析执行的,想当做原始内容处理的,可以放到CDATA区,这样xml程序会原封不动的输出。如:

<![CDATA[
    <aa>
    严封不动输出!
    </aa>
]]>

6、转义字符
对于一些单个字符,若想显示其原始样式,也可以使用转义的形式处理。简而言之,言而简之:若是想输出给人看,使用转义字符来代替;若想给机器看,让其原始输出,则才有CDATA区。

特殊字符 替代字符
& &
< <

&gt;

“ "
‘ '

7、处理指令:处理指令,检查PI(processing instruction).处理指令用来指挥解析引擎如何解析xml文档内容.
通知xml解析引擎,应用css文件显示xml文档内容。语法:”<?”开头”?>”结尾。常见的如:<?xml-stylesheet type=”text/css” href=”1.css” ?>

xml约束概述:
1、什么是xml约束,在xml技术里,可以编写一个文档来约束另一个xml文档的书写规范,称之为xml约束。
2、为什么要约束,凡事都需要xml约束来规范。
3、常用的约束技术:xml DTD、xml Schema。

DTD约束快速入门:Document type definition,文档类型定义。 <!DOCTYPE 跟标签 SYSTEM “book.dtd” >

 <?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE 书架 SYSTEM "books.dtd">
<书架>
    <书>
        <书名>哎呦</书名>
        <作者>你觉得呢</作者>
        <售价>23.9</售价>
    </书>
    <书>
        <书名>哎呦</书名>
        <作者>你觉得呢</作者>
        <售价>23.9</售价>
    </书>
    <书>
        <书名>哎呦</书名>
        <作者>你觉得呢</作者>
        <售价>23.9</售价>
    </书>
</书架>

##编写DTD,
有两种编写方式,可以作为单个文件进行引入,也可以直接写在内部。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE 书架[
    <!ELEMENT 书架(书+)>
    <!ELEMENT 书(书名,作者,售价)>
    <!ELEMENT 书名(#PCDATA)>
    <!ELEMENT 作者(#PCDATA)>
    <!ELEMENT 售价(#PCDATA)>
]>
<书架>
    <书>
        <书名>哎呦</书名>
        <作者>你觉得呢</作者>
        <售价>23.9</售价>
    </书>
    <书>
        <书名>哎呦</书名>
        <作者>你觉得呢</作者>
        <售价>23.9</售价>
    </书>
    <书>
        <书名>哎呦</书名>
        <作者>你觉得呢</作者>
        <售价>23.9</售价>
    </书>
</书架>

·当引用的文档在本地时,采用<!DOCTYPE 书架 SYSTEM “book.dtd”>
·当引用的文件是一个公共的文件时,采用<!DOCTYPE 文档根节点 PUBLIC “DTD名称” “DTD的url地址”>

元素的定义:
<!ELEMENT 元素名 元素里的内容>
属性的定义:
<!ATTLIST 元素名 属性名1 属性值类型 设置说明
属性名1 属性值类型 设置说明
……….
>

<!ENTITY AA “I LOVE YOU”> //引用实体
<!ENTITY % 实体名称 “实体内容”>//参数实体,只能被DTD文件自身使用,做到代码的重用和简化

##Dom和sax解析方法的区别:
1、dom解析的优点是对文档crud比较方便,缺点是占用内存比较大
2、sax解析的优点是占用内存少,解析速度快,缺点是只适合做文档读取,不适合做文档的crud

文章目录