XML

1、XML是可扩展标记型语言,类似HTML,主要功能是存储、传输数据而非显示数据。可扩展则标签可以自定义。XML是w3c组织发布的技术。

2、xml的应用:

①不同系统之间传输数据:标签标记易于维护和不同系统的读取、使用

②用来表示生活中有关系的数据:标签的包含关系

③经常用在配置文件之中

3、xml语法:

①XML的文档声明:(创建后缀名为.xml的文件)

文档声明(第一行第一列):<?xml version="1.0" encoding="gbk" standalone="no"?>最一个属性是否依赖其他文件

XML中文乱码问题解决:

原因:本地硬盘数据保存一般为gbk格式,当文件设置的编码不为gbk时,打开文件时就会出现乱码

如果不想出现乱码就需使设置保存时的编码和打开时的编码一致。

②xml的元素定义

标签包含主体内容则必须有结束,不包含主体内容则可以在标签内结束(<br/>);

一个文件中只能有一个根标签;

对于xml标签中出现的所有空格和换行,XML解析程序都会将其当做标签内容进行处理;

xml标签命名区分大小写,且标签名不能以数字、特殊字符和_开头,不能包含空格和冒号。但是标签可以是中文

③XML属性的定义:属性的命名规范同标签命名,属性值可以使用单引号或双引号引起来。

④注释:<!-- -->注释不能嵌套,注释也不能放在第一行(第一行是声明)

⑤特殊字符需要转义:&→&amp;<→&lt;>→&gt;(注意有分号)

⑥XML的CDATA区:解决同时需要转义多个字符的情况,将其放入CDATA区,将其作为文本内容而不是标签:<![CDATA[  内容  ]]>

⑦XML的PI指令(设置指令):可以在xml中引入样式(一般不用)

一般放在第二行:<?xml-stylesheet type="text/css" href="css路径"?>(样式对中文标签不起作用)

⑧【重要】XML约束技术:DTD约束(还有一个schema约束)

>创建后缀名为.dtd的文件,内容:

复杂元素,即有子元素的元素:<!ELEMENT person (name,birthday)>(需进行约束的.xml文件中元素)

简单元素写法:<!ELEMENT birthday (#PCDATA)>

<!ELEMENT age (#PCDATA)>

注:空格必须有

而后,在xml文件中引入dtd文件:

引入方式一:<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">

方式二:直接写在xml文档中:<!DOCTYPE 根元素名称  [dtd文件内容] >

方式三:使用外部的dtd文件(网络上的dtd文件):<!DOCTYPE 根元素名称  PUBLIC "DTD名称" "DTD文档的URL" >

此时,在xml中如果有了除上述dtd约束文件以外的元素,则会报错,但是浏览器打开的xml文件只校验xml语法,并不校验约束,所以需要使用工具查看

>使用dtd定义元素:

语法:

简单元素:<!ELEMENT 元素名 约束>

例:(#PCDATA)即约束元素为字符串类型

EMPTY 约束元素内容为空

ANY 任意

复杂元素:

(子元素[+/?/*],子元素...)

+表示该元素出现一次或多次;?表示一次或0次;*表示任意次数

子元素之间以|分割表示这些元素仅能出现任意一个

>使用DTD定义属性

<!ATTLIST 元素名称 属性名称 属性类型 属性约束>

属性值类型:

PCDATA:表示属性值的取值为普通的文本字符串

枚举类型:(a|b|c)

ID:表示属性的取值不能重复

属性约束设置:

#REQUIRED表示属性必须有

#IMPLIED表示属性可有可无

#FIXED表示属性值必须是设置的固定值

属性类型后面后直接跟属性值,不要属性约束,即直接值,表示使用该固定属性值

<!ELEMENT person (name,birthday)>

<!ELEMENT birthday (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ATTLIST birthday ID1 CDATA #FIXED "123">设置了固定的属性值

>定义实体:<!ENTITY 实体名称 实体内容>

在xml中引用实体内容:&实体名称

定义实体需要写在内部dtd中,如果写在外部dtd里,某些浏览器读取不到。

⑨Schema约束

>特点:

基于XML的DTD替代者,即其符合xml语法。

一个xml可以有多个Schema约束(一个xml只能有一个dtd约束),多个Schema使用名称空间区分。

Schema中支持更多类型。

Schema语法更加复杂,所以目前并未完全替代dtd。

>创建Schema文件:后缀名.xsd;需要声明;根节点<schema>;

在schema文件中是有w3c提供的属性和标签约束xml文件;

示例:

<?xml version="1.0" encoding="UTF-8"?>
<!-- xmlns属性表示该xml文件是一个约束文件 -->
<!-- targetNamespace表示:如果要使用该schema文件可通过属性值地址引入(该地址可以自定义任意类型,一般为避免重复使用的是URL地址) -->
<!-- elementFormDefault属性表示质量良好 -->

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/NewXMLSchema" elementFormDefault="qualified">
    <!-- 复杂元素 -->
    <element name="person">
        <complexType>
            <sequence><!--表示元素按照顺序出现,另外,还有<choice>表示元素仅能出现其中一个,<all>表示只能出现一次,-->
                
<!-- 简单元素 -->
                <element name="name" type="string"></element><!-- 元素可选属性maxOccurs="unbounded"表示元素出现的次数:没有限制 -->
                <element name="age" type="int"></element>
            </sequence>
        </complexType>
    </element>
</schema>

注:

①在复杂元素下( </complexType>内)还可以定义属性:<attribute name="id" type="int" use="required"></attribute>,其中use属性表示必须出现。

②若在<sequence></sequence>添加元素<any></any>其表示在xml文件中此处可插入任意一个元素

在person.xml中引入约束文件:

<!-- 第一个xmlns:xsi属性加上-xsi是别名(名称空间),为了区别于第二个xmlns属性。instance表示该xml文件是被约束文件 ;第二个xmlns属性表示要引入的约束文件;第三个属性是定义命名空间 :约束文件地址空格约束文件名-->
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.example.org/NewXMLSchema"
xsi:schemaLocation="http://www.example.org/NewXMLSchema NewXMLSchema.xsd"></person>

>引入多个schema约束文件时:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"指定该文件是被约束文件

xmlns="http://www.example.org/NewXMLSchema" 其中一个约束文件地址

xmlns:任意别名="第二个约束文件地址"
xsi:schemaLocation="http://www.example.org/NewXMLSchema NewXMLSchema.xsd 第二个约束文件地址 第二个约束文件名"

在xml文件中引入时:

如果引入的是起了别名的约束文件中的元素则:<别名:元素名>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值