比较全的XML笔记

前端之家收集整理的这篇文章主要介绍了比较全的XML笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Xml全称为Extensible markup Language,可扩展标记语言

XML严格区分大小写

Xml可用于保存关系数据,软件的配置文件,描述软件模块之间的关系

xml文件包括以下几个部分:

元素

属性

注释

CDATA

特殊字符

最简单的声明语法:

<?xml version=”1.0” ?>

encoding属性说明文档的字符编码:

<?xml version=”1.0” encoding=“gb2312”?> (xml文档以什么编码保存,就要以什么编码打开)

standalone属性说明文档是否独立:

<?xml version = “1.0” encoding=”gb2312”standalone=”yes” ?>

一般来讲,xml文件伴随着一个约束文件

XML语法

一个XML文件主要包括以下几个部分内容

1、 文档声明

2、 元素

3、 属性

4、 注释

5、 CDATA

6、 特殊字符

xml文件standalone属性默认是no

xml文件中必须出现一个开始标签,一个结束标签

一个标签有以下几种:

包含标签体:<a>asdas</a>

不含标签体:<a></a> 可以简写成为:<a/>

Xml中有且只能有一个根元素。

文档中的空格和换行不同,默认文档不同,但是解析器可以将之trim掉。

Xml元素的命名规范

一个元素可以包含字母、数字以及其它一些可见字符,但必须遵循以下规范:

区分大小写,例如<p><P>是两个不同的标签

Html不区分大小写。

不能以数字或“_”(下划线)开头

不能以xml(XML、或Xml)开头

不能包含空格

名称中间不能包含冒号(:)。

标签属性

一个标签可以有多个属性,每个属性都有它自己的名称和取值。例如:<input name=”text”>

属性值一定要用双引号(“)或单引号(‘)引起来

定义属性必须遵循与标签相同的命名规范

Xml中的注释<!---->

注意:

1、 XML声明之前不能有注释

2、 注释不能嵌套

CDATA

1、 在编写XML文件时,有些内容可能不想让解析引擎执行,而是当做原始内容处理。

2、 遇到此种情况,可以把这些内容放在CDATA中处理

XML约束

在XML里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML文档的书写规范,这称之为XML约束。

常见的约束技术有

xmlDTD:早期约束 必须是UTF-8Unicode

xmlSchema:后期的约束

DTD约束快速入门

DTDDocument Type Definitiion)全称为文档类型定义。

DTD文件

写在第一行的<ELEMENT 书架 (+)>:表示根元素 根元素表示书架

+:表示一或多个。

#PCDATA:表示字符串。

xml文件被约束的条件是写一个DOCTYPE,然后跟一个 根元素用SYSTEM表示引用的是本地的一个定义。

<!DOCTYPE 书架 SYSTEM "book.dtd">其中book.dtd表示相对路径。

book.dtd文件,用以约束book.xml文件

<!ELEMENT 书架 (+)>

<!ELEMENT (书名,作者,售价)>

<!ELEMENT 书名(#PCDATA)>

<!ELEMENT 作者(#PCDATA)>

<!ELEMENT 售价(#PCDATA)>

这里使用的是外部约束

book.xml文件

<?xml version="1.0"encoding="gbk" ?>

<!DOCTYPE 书架 SYSTEM "book.dtd">

<书架>

<>

<书名>javaweb开发</书名>

<作者>老张</作者>

<售价>30.00</售价>

</>

</书架>

同样可以使用内部约束的方式如:

<!DOCTYPE 书架 [

<!ELEMENT书架 (+)>

<ELEMENT (书名,作者,售价)>

<!ELEMENT书名(#PCDATA)>

<!ELEMENT作者(#PCDATA)>

<!ELEMENT售价(#PCDATA)>

]>

<书架>

<>

<书名>javaweb开发</书名>

<作者>老张</作者>

<售价>30.00</售价>

</>

</书架>

当引用的文件是一个公共的文件时,采用如下方式:

<!DOCTYPE 文档根节点 PUBLIC DTD文件URL>

<!DOCTYPE web-app PUBLIC

"-//SunMicrosystems,Inc.//DTD Web Application 2.3//EN“

"http://java.sun.com/dtd/web-app_2_3.dtd">

元素定义

定义xml文件能写哪些元素,以及这些元素的内容,定义能写哪些标签

属性

定义标签能写哪些属性

实体定义

页面中引用的变量

元素定义

DTD文档中使用ElEMENT声明一个XML元素

语法格式如下

<!ELEMENT 元素名称元素类型>

元素的类型可以是元素的内容或类型

<!ELEMENT 书架(作者,售价)> 复杂元素

<!ELEMENT 书名(#PCDATA>表示简单元素

如为元素类型,则直接书写,如下:

<!ELEMENT 书架 EMPTY>

·EMPTY :用于表示空元素,例如<br/>

·ANY:表示元素内容为任意类型

约束中美约束的类型,则不能写。

+:一次或多次

?:0次或一次

*0次或多次。

<!ATTLIST 元素名:表示为哪个标签元素声明属性

#required:不需的

#required:必须设置该属性

#IMPLIED:可以设置也可以不设置

#FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值

直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。

DTD

XMLID不可以数字开头。

xml解析中有一个getElementById(“aaa”);Javascript中的不相同。

实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。

DTD定义中,一条<!ENTITY…>语句用于定义一个实体。

实体可以分为两种类型:引用实体和参数实体。

引用实体主要在XML文档中被应用

语法格式:

<!ENTITY 实体名称实体内容” >:直接转变成实体内容

引用方式:

&实体名称

举例:

<!ENTITY copyright “I am a programmer”>

&copyright;

参数实体:

参数实体被DTD文件自身,

语法格式:

%实体名称

举例:

<! % TAG_NAMES “姓名 | EMAIL | 电话 | 地址”>

<!ELEMENT 客户信息(%TAGINAMES; | 公司名)>

DTD中根本就不支持数据类型的。

XML Schema

xml schema 也是一种用于定义和描述XML文档与内容的模式语言,其出现是为了克服DTD的局限性

xml schema特点:

1、 xml schemadtd更加符合xml语法结构,因为xml schema自身就是一个xml文件,为了有所,扩展名通常为.xsd

2、 xml解析器很容易解析出xmlschema文档中的内容

3、 xml schema名称空间支持得非常好。

4、 xml schemaxml DTD 支持更多的数据类型,并支持用户自定义新的数据类型

5、 xml Schema定义约束的能力非常强大,可以对xml实体文档作出细致的语义限制。

一个XML schema 文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。

XML文件一样,一个XML Schema文档必须有一个根节点,通常需要把这个文件生命的元素绑定到一个uri地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema 文档声明的元素绑定到一个命名空间上。以后xml文件就可以通过这个URL(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

名称空间的概念

1、 为什么要声明名称空间

由于xml文档可以被任何组织和个人定义,这就完全有可能在一个xml文件中出现重复的元素,此时使用名称空间可以加以区分。

2、 XML Schema中,每个文约束模式文档就可以被赋以一个唯一的名称空间,名称空间用一个唯一的URLUniformResource Identifier 统一资源标识符)表示。

3、 通过xmlns关键字来引用一个名称空间,用一个变量指定一个uri地址。如:xml文件中的内容

<itcast:书架 xmlns:itcast=”http://www.itcast.cn”>

<itcast:>……</itcast:>

</itcast:书架>

4名称空间中的url虽然是以http开头的,但可以不指向任何一个真实的地址,而仅仅是作为一个名称空间来声明

MaxOccurs=”unbounded”:表示它的子节点是无上限的。

compleType:表示的意思是复杂元素

type='xs:string':表示数据类型为字符串。

book.xsd文档

<?xml version="1.0"encoding="UTF-8">

<xs:schemaxmlns:xd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.itcast.cn"

elementFormDefault="qualified">

<xs:elementname="书架">

<xs:sequence maxOccurs='unbounded'>

<xs:elementname=''>

<xs:compleType>

<xs:sequence>

<xs:element name='书名' type='xs:string'/>

<xs:element name='作者' type='xs:string'/>

<xs:element name='售价' type='xs:string'/>

</xs:sequence>

</xs:compleType>

</xs:element>

</xs:sequence>

</xs:element>

</xs:schema>

targetNamespace的作用是将shema文档中定义的元素绑定到:http://www.itcast.cn这个名称空间上了。

book.xml文档,此文档被上面一个文档约束。

<?xml version="1.0"encoding="UTF-8" ?>

<itcast:书架 xmlns:itcast="http://www.itcast.cn"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.itcast.cnbook.xsd">

<itcast:>

<itcast:书名>JavaScript网页开发</itcast:书名>

<itcast:作者>张孝祥</itcast:作者>

<itcast:售价>28.00</itcast:售价>

</itcast:>

</itcast:书架>

xsi:schemaLocation="http://www.itcast.cn book.xsd":用于说明名称空间是绑定在本地的book.xsd文件中。说明其下面的元素实际定义在什么位置。实际上是在http://www.itcast.cn book.xsd上。

schemaLocation:表示来自xsi名称空间,而xsi有来自:xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance真实存在的网址。这是一个真实的约束文档,输入这个网址后可以看到一个真实约束文档,这个文档是w3c定义好的。

xs命名空间;来自w3c定义好的约束文档中。

使用默认的名称空间:

基本格式:xmlns=”URL”

举例:

使用默认名称空间的原因是,我的xml文档只使用一个约束文档。此时就可以不使用约束文档。

那么itcast就可以省了。可以写成以下的部分:

<书架 xmlns=”http://www.it315.org/xmlbook/schema”>

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation=http://www.itcast.cn book.xsd

<>

<书名>Javascript网页开发</书名>

<作者>张孝祥</作者>

<售价>28..00</售价>

</>

</书架>

不适用名称空间引入XMLSchema文档

文件清单:xmlbook.xml

<?xml version=”1.0” encoding=”UTF-8”?>

<书架 xmlns:xsi=”http://www.w3c.org/2001/XMLSchema-instance”

xsi:noNamespaceSchemalLocation=”xmlbook.xsd”>

<>

<书名>JavaScript网页开发</书名>

<作者>张孝祥</作者>

<售价>28.00</售价>

</>

</书架>

下面是引用CSS的方式,其中config.css和它是在同级目录下的。

<?xml version="1.0"encoding="gb2312" standalone="no"?>

<?xml-stylesheettype="text/css" href="config.css"?>

<soft>

<a>

<a1 id="a1">中国</a1>

<a2 id="a2">美国</a2>

</a>

<b>

<b1 id="b1">英国</b1>

<b2 id="b2">日本</b2>

</b>

</soft>

猜你在找的XML相关文章