XML笔记Word下载.docx

上传人:b****4 文档编号:16686033 上传时间:2022-11-25 格式:DOCX 页数:22 大小:23.84KB
下载 相关 举报
XML笔记Word下载.docx_第1页
第1页 / 共22页
XML笔记Word下载.docx_第2页
第2页 / 共22页
XML笔记Word下载.docx_第3页
第3页 / 共22页
XML笔记Word下载.docx_第4页
第4页 / 共22页
XML笔记Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

XML笔记Word下载.docx

《XML笔记Word下载.docx》由会员分享,可在线阅读,更多相关《XML笔记Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

XML笔记Word下载.docx

4、Web集成

5、配制

2、XML文档的框架结构

XML文档=序言+元素+杂项(可选)

1)序言

序言=(XML声明)+(杂项)+(文档类型声明)

XML声明

<

xml版本信息(编码信息)(文档独立性信息)?

如:

encoding="

gb2312"

standalone="

yes"

文档类型声明

规定元素的结构和属性列表的取值

DOCTYPEstudinfoSYSTEM"

studinfo.dtd"

2)元素

空元素

空元素标签名属性="

属性值"

/>

非空元素

起始标签>

内容<

结束标签>

内容=(子元素|字符数据|字符数据段|引用|处理指令|注释)*

子元素

字符数据

字符数据中,不能含有&

<

>

'

"

需要采用实体引用的方式

字符数据段

<

[CDATA[字符数据]]>

引用

实体引用

--thisisacomment

hehe

-->

student>

script>

--字31526数25454-->

&

lt;

hello&

gt;

quot;

zhangshan&

amp;

apos;

lishi&

--字31526数25454段-->

[CDATA[

functioncompare(a,b){

if(a>

b)

then{return1}

else{return0}

}]]>

/script>

namecountry="

china"

张19977<

/name>

/student>

--------------------------------------------------------------------------------

3)杂项

处理指令

XML为其它应用程序准备的接口。

处理指令?

注释

--注释内容-->

空白符

指空格、回车等

3、格式良好的XML文档

(1)文档声明位于文件的开头,“xml"

与“<

"

之间无空格!

(2)唯一根元素

(3)标记必须闭合

(4)层层嵌套

(5)大小写敏感

(6)属性必须使用引号

(7)注意特殊字符

DTD笔记

1.DTD是什么?

文档类型定义

2.DTD的调用

方式一:

调用内部文档类型定义。

注意点:

(1)studinfo与(#PCDATA)有空格

如:

限定在这段代码中使用字符串:

ELEMENTstudinfo(#PCDATA)>

(2)文档类型名与根元素名必须一致

方式二:

调用外部文档类型定义,

(1)standalone="

no"

(2)注意dtd文件的路径

xmlversion=”1.0”standalone=”no”?

DOCTYPEstudinfo[<

]>

studinfo>

/studinfo>

//定义之后不能在到他们之间加入字符串引入了

DOCTYPE:

引入一个文档类型的申明

studinfo:

文档类型名,

SYSTEM:

关键字

3.DTD的结构

元素类型声明

指明元素的名称和元素含有的内容。

元素类型声明=<

ELEMENT元素名(元素内容说明)元素内容说明='

EMPTY'

|'

ANY'

|混合内容|元素内容|'

#PCDATA'

#PCDATA:

只有可析的字符数据才能作为元素的内容

元素内容:

元素内部只能出现指定的子元素

示例dtd3.xml,studinfo3.dtd

EMPTY内容:

示例dtd4.xml,studinfo4.dtd

ANY:

混合内容:

标记文本和可析字符串

属性表声明

属性:

由“=”分隔的成对的属性名和属性值构成,只能出现在元素标记的内部。

结束标记不能带属性,一个元素可以具有多个属性

语法:

ATTLIST对应的元素名属性名属性取值类型属性默认值>

属性取值类型

1、CDATA:

可析字符

2、Enumerated:

枚举类型,由“|”分隔的可能的属性值列表

属性默认值:

注意

1、#REQUIRED:

必须提供属性值

2、IMPLIED:

可提供也可不提供

3、FIXED:

不能修改

实体声明

实体:

存储了任意符合规则的xml文档单元片断。

1、内部通用实体

定义格式

ENTITY实体名“实体内容”>

引用格式

&

实体名;

2、外部通用实体

ENTITY实体名SYSTEM“外部实体的URI”>

声明为是一个xml,支持版本为1.0的文件,并需要DTD的验证.

定义注释语句.

可以用两种方式来调用DTD文件:

1,内部引用:

可以把注释语句中的代码作为正常运行语句,用<

DOCTYPEteacher[]>

来包含在中括号里面.而不需要注释下面那一语句.其它语句不变.

2,外部引用:

将注释中的代码另外生成一个名为:

teacher.dtd文件,然后在teacher.xml文件中就使用以下语句进行调用即可.

--

定义一个元素teacher,并包含三个子元素,而且student+为在调用时可支持多个student子元素.

ELEMENTteacher(name,age,student+)>

定义子元素,并定义为只可析的字符数据才能作为元素的内容

ELEMENTname(#PCDATA)>

ELEMENTage(#PCDATA)>

定义子元素,并把这个子元素作为继续包含孙子元素的父元素,因为上面定义过了这两个孙子元素同名的子元素.所以以下可以不在定义这两个孙子元素.

ELEMENTstudent(name,age)>

定义teacher元素的熟悉course,CDATA:

可析字符,#REQUIRED:

调用语句中必须提供属性值

ATTLISTteachercourseCDATA#REQUIRED>

定义一个枚举类型,并设置默认值为fish.

ATTLISTteachercourse(fish|play|read)"

fish"

>

用于外部调用语句,在没有上面语句时,可以调用teacher.dtd来验证dtd文件.

DOCTYPEteacherSYSTEM"

teacher.dtd"

xml标签语句主体开始,并因为上面声明的属性必需提供属性值.

teachercourse="

math"

定义子元素的值

name>

chengzh<

age>

28<

/age>

定义孙子元素的值

hegh<

23<

可以支持多个student子元素,因为”+”声明了多个

chenzy<

24<

/teacher>

名域

1、作用:

解决XML文档中命名冲突的问题,即将

XML文档与引用URI标识的名域相结合,来

限定其中的元素和属性名。

2、名域的声明

(1)直接定义

xmlns:

名域前缀="

名域的URI"

(唯一性)

类比:

名字与身份证

(2)缺省定义

xmlns=名域的URI

3、名域的使用

(1)用名域限定元素

(2)用名域限定属性

4、名域的作用范围

名域能够把声明它的元素和该元素的所有子元素

关联起来,除非它们被其他的名域声明所覆盖。

文件名为:

namespace.xml

UTF-8"

--namespace-->

下面的name可以为任意名字.Boy为第一域名空间.由关键字xmlns来指定第二域名空间.区别两个域名空间之间子元素.避免名字相同的子元素冲突.

boy:

namexmlns="

hello!

xmlns:

girl="

love!

girl>

girl:

zhangbz<

/girl:

25<

/girl>

/boy:

或:

boyxmlns:

boy="

/boy>

 

第二天:

一,xml文件(二与三都是针对一操作)<

介绍schema功能>

--定义xsd文件的位置,如果xsd没有定义目标名域,就必需用以下noN***来定义位置-->

studentxmlns:

xsi="

http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

noNamespaceSchemaLocation="

/home/soft01/heguanhua/workspace/corejava/XML/student1.xsd"

id="

1000"

--xml来引用xsd

如果引用的xsd文件定义了目标名称空间的话,就要把noN***换成schemaLocation="

xsd文件路径名"

如:

schemaLocation="

//www.sd0606/student这是目标名字空间

/home/soft01/heguanhua/workspace/corejava/XML/student3.xsd"

这是原文件路径名

然后在把student换成tc:

tc="

//www.sd0606/student"

来指定目标名称空间-->

firstname>

shang<

/firstname>

lastname>

zhang<

/lastname>

20

mother>

ll<

/mother>

father>

aa<

/father>

1,age的值必须是数字

2,name的值必须是字符串

3,name,age的顺序必须有先后顺序

4,student是根元素

5,name为复杂元素,包含两个子元素

6,在student3.xml里面来定义限制age在10-30之间和把name定义为枚举类型,为id定义属性

定义两个子元素为可选项,至少选择一个.

二,

--xsd与xsd之间引用:

在下面语句中加入xmln:

来指定地址空间

并加入:

xs:

importnamespace="

schemaLocation="

/xs:

import>

来指定所要引用xsd文件的目标名字空间和文件路径名-->

schemaxmlns="

//www.w3.org/2001/XMLSchema"

elementname="

student"

complexType>

--元素有子元素或有属性,所以得定义成复杂类型-->

sequence>

--定义元素出现的顺序-->

elementref="

name"

--用xs:

element元素来引用name子元素-->

element>

age"

element元素来引用age子元素-->

--定义name子元素为复杂类型,并定义其两个孙子元素-->

compleType>

--利用ref来引用外部的两个已定义的孙子元素-->

firstname"

lastname"

--定义两个孙子元素,并定义字符串类型由schema指定-->

type="

string"

--age元素名称,并定义为整型-->

int"

/schema>

三,

schemaxmlns:

xs="

xmlns:

targetNamespace="

--由xmlns:

tc来引入原名称空间-->

--当前xsd文件所定义的类型属于targetNamespace所指定的空间-->

--定义了一个names类型,在以下得到调用.可以用maxOccurs="

unbounded"

来声明可用多个name子元素-->

names"

maxOccurs="

--把age元素定义为一个stuage类型,并通过下面的自定义简单类型实现-->

tc:

stuage"

<

choice>

--用于可选项,但必须至少选一个元素-->

<

father"

mother"

--定义student的属性-->

id"

use="

required"

--自定义简单类型,一般用于扩展基本数据类型-->

simpleTypename="

--用于限制数据类型扩展,base为基于什么类型-->

restrictionbase="

--minInclusive表示大于等于-->

minInclusivevalue="

10"

minInclusive>

--minInclusive表示小于等于-->

maxInclusivevalue="

30"

maxInclusive>

restriction>

simpleType>

--自定义简单类型,实现name元素的枚举功能-->

--用于限制数据类型扩展,base为基于字符串类型-->

--枚举类型定义,值以value指定-->

enumerationvalue="

zhang"

enumeration>

san"

--自定义简单类型.实现对子元素的可选功能-->

--两个子元素至少选择一个,并限制为字符串类型-->

schema>

解析器SAX与DOM

一,SAX解析器:

事件驱动。

当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。

  优点:

不用事先调入整个文档,占用资源少;

SAX解析器代码比DOM解析器代码小,适于Applet,下载

  缺点:

不是持久的;

事件过后,若没保存数据,那么数据就丢了;

无状态性;

从事件中只能得到文本,但不知该文本属于哪个元素;

  使用场合:

Applet;

只需XML文档的少量内容,很少回头访问;

机器内存少

SAX处理流程

samples>

server>

UNIX<

/server>

monitor>

color<

/monitor>

/samples>

分析这个代码片断的SAX处理器一般情况下将产生以下事件:

Startdocument

Startelement(samples)

Characters(whitespace)

Startelement(server)

Characters(UNIX)

Endelement(server)

Startelement(monitor)

Characters(color)

Endelement(monitor)

Endelement(samples)

SAXAPI允许开发人员捕捉这些事件并对它们作出反应。

SAX处理涉及以下步骤:

创建一个事件处理程序。

创建SAX解析器。

向解析器分配事件处理程序。

解析文档,同时向事件处理程序发送每个事件。

选择DOM还是选择SAX,这取决于下面几个因素:

应用程序的目的:

数据容量:

数据多少部分会被使用

对速度的需要:

对程序的实现:

1,XML文件(所要解析的文件)

dbconfig>

username>

t1<

/username>

password>

t2<

/password>

/dbconfig>

2,解析器程序:

(一)

packagesax.exec;

importjava.util.Properties;

importjavax.xml.parsers.SAXParser;

importjavax.xml.parsers.SAXParserFactory;

import

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1