比较全的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-8或Unicode xmlSchema:后期的约束
DTD约束快速入门 DTD(Document 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 在XML中ID不可以数字开头。
xml解析中有一个getElementById(“aaa”);与Javascript中的不相同。
实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。
在DTD定义中,一条<!ENTITY…>语句用于定义一个实体。
实体可以分为两种类型:引用实体和参数实体。
引用实体主要在XML文档中被应用 语法格式: <!ENTITY 实体名称“实体内容” >:直接转变成实体内容
引用方式: &实体名称
举例: <!ENTITY copyright “I am a programmer”> … ©right;
参数实体: 参数实体被DTD文件自身,
语法格式: %实体名称
举例: <! % TAG_NAMES “姓名 | EMAIL | 电话 | 地址”> … <!ELEMENT 客户信息(%TAGINAMES; | 公司名)>
在DTD中根本就不支持数据类型的。
XML Schema xml schema 也是一种用于定义和描述XML文档与内容的模式语言,其出现是为了克服DTD的局限性
xml schema特点: 1、 xml schema比dtd更加符合xml语法结构,因为xml schema自身就是一个xml文件,为了有所,扩展名通常为.xsd 2、 xml解析器很容易解析出xmlschema文档中的内容。 3、 xml schema对名称空间支持得非常好。 4、 xml schema比xml 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中,每个文约束模式文档就可以被赋以一个唯一的名称空间,名称空间用一个唯一的URL(UniformResource 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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |