xmlspy教程文档格式.docx

上传人:b****3 文档编号:18480793 上传时间:2022-12-17 格式:DOCX 页数:16 大小:87.13KB
下载 相关 举报
xmlspy教程文档格式.docx_第1页
第1页 / 共16页
xmlspy教程文档格式.docx_第2页
第2页 / 共16页
xmlspy教程文档格式.docx_第3页
第3页 / 共16页
xmlspy教程文档格式.docx_第4页
第4页 / 共16页
xmlspy教程文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

xmlspy教程文档格式.docx

《xmlspy教程文档格式.docx》由会员分享,可在线阅读,更多相关《xmlspy教程文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

xmlspy教程文档格式.docx

110<

/Phone>

Email>

小陈@<

/Email>

/Person>

女"

小林<

/Name>

112<

小林@<

/Contacts>

XML文档就这么简单,你应该树立起信心。

如果你仔细看一下上面的XML文件你会发现有个错误:

 结束标记与开始标记不匹配

小菜想看看XML文档是否真的严谨。

使用IE浏览器打开它。

 

看来不错,XML设计的很严谨。

2、使用XMLSpy创建上面的XML文档(通讯录)Contacts.xml

上面使用记事本+浏览器,构成了我们的开发平台。

不仅麻烦,而且视觉效果很差。

接下来我们来使用一下XMLSpy。

点击Browser会自动提示错误,并且定位到Nane结点。

确实方便不是吗?

(XMLSpy应该给我颁个奖,这么卖力的帮它宣传)

3、XML也需要约束

XML太方便了,以至于所有人都能打开XML文档修改一番。

这也就产生了一个问题,怎么保证XML文档结构良好。

如果阿扁(也就是欠扁的人)想恶作剧一下,修改了XML文档。

 把小陈的Sex修改为<

Person 

Sex="

不男不女"

 添加了结点<

傻瓜>

你是傻瓜吗?

/傻瓜>

在Browser中正常显示出了<

和<

,由于你并没有对该XML文档进行相应的约束,所以根本没有错误可言。

看来真是糟糕透了,如果被小陈发现了,一定会来个人肉搜索把那该死的阿扁找出来。

可见我们需要对XML文档进行约束,所谓无规矩不成方圆。

约束XML文档的方式主要有两种:

DTD(DocumentTypeDefinition)文档类型定义

XSD(XMLSchemaDefinition)XML模式定义

(二)、DTD(DocumentTypeDefinition)文档类型定义

1、DTD包含在XML中:

Contacts.xml

?

xmlversion="

1.0"

encoding="

UTF-8"

!

DOCTYPEContacts[

ELEMENTContacts(Person*)>

ELEMENTPerson(Name,Address,Phone,Email)>

ATTLISTPersonSex(男|女)"

ELEMENTName(#PCDATA)>

ELEMENTAddress(Country,Province,City)>

ELEMENTCountry(#PCDATA)>

ELEMENTProvince(#PCDATA)>

ELEMENTCity(#PCDATA)>

ELEMENTPhone(#PCDATA)>

ELEMENTEmail(#PCDATA)>

]>

你是傻瓜吗?

使用XMLSpy点击Browser会提示错误:

定位到出错位置:

 

在我们的DTD代码中有:

ATTLIST 

Sex 

(男|女) 

"

说明了:

Sex为Person元素的属性,为枚举类型,值只能为“男”或“女”,默认值为“男”

改正:

将其修改为男。

点击Revalidate重新验证。

在我们的DTD代码中没有声明该元素,所以提示错误,将其删除。

现在没有错误了。

接下来就来说说DTD中的基本语法:

DOCTYPE 

Contacts 

[]>

表示根结点为Contacts。

注意这是当DTD包含在XML中使用的。

如果XML是引用外部的DTD文件,就不是这样了,下面会说道。

ELEMENT 

(Person*)>

ELEMENTContacts 表示声明元素Contacts,这样就允许XML文档中出现<

Contacts(Person) 表示元素Contacts包含子元素Person,这样就允许XML文档中出现<

Person>

Person* 表示Person可以出现 0次 到 多次

Person+ 表示元素Person可以出现1次 到 多次

Person?

 表示元素Person可以出现 0次 到 1次

(Name, 

Address, 

Phone, 

Email)>

ELEMENTPerson 表示声明元素Person

Person(Name,Address,Phone,Email) 表示Person包含元素Name,Address,Phone,Email而且顺序也固定了。

ATTLISTPersonSex 表示为Person元素声明属性Sex,为枚举类型,值为:

男或者女,默认值为 “男”

Name 

(#PCDATA)>

声明元素Name,#PCDATA表示:

Name元素不包含其他子元素而只包含字符数据的元素。

Address 

(Country, 

Province, 

City)>

Country 

Province 

City 

Phone 

Email 

和上面的差不多。

还有一些常用的也附带说下:

比如有个XML文档中有个结点:

image 

id="

image1"

src="

image1.jpg"

width="

200"

height="

300"

/image>

要求就省了,直接看对应的dtd代码吧。

EMPTY>

 声明元素image,EMPTY表示元素不含有字符数据或子元素,只有属性。

 如果出现<

image>

xxx<

提示错误

id 

ID 

#IMPLIED 

 为image元素声明属性id,ID表示属性id为在DTD指定的XML文档中唯一,#IMPLIED表示可以有属性id也可以不出现。

imageid="

出错。

src 

CDATA 

#REQUIRED 

 为image元素声明属性src,CDATA表示src属性的类型为字符数据,#REQUIRED表示src属性是必须的,必须出现。

width 

height 

常用的差不多都说了,XMLSpy中也带了几个例子,大家有时间也可以看看。

了解了上面的内容后,阅读XMLSpy中的例子代码应该不存在问题。

大家可以使用XMLSpy,建个XML文档和DTD,试一下,就都明白了,实践是理解事物最好的途径。

2、XML文档引用外部DTD文件

创建Contacts.dtd文件

创建Contacts.xml文件

DOCTYPEContactsSYSTEM"

Contacts.dtd"

只需使用:

SYSTEM 

就搞定了,DOCTYPE 

Contacts表示根结点Contacts SYSTEM后跟dtd文件的路径。

(三)、XSD(XMLSchemaDefinition)XML模式定义

XMLSchema所起的作用与DTD相同,都是用来约束XML文档的,不过XMLSchema有如下三个优势。

1、DTD是用一种与XML不同的语法编写,而XMLSchema是使用一种类XML的语言。

2、DTD中的所有声明都是全局声明,而XMLSchema既有全局声明也有局部声明。

3、DTD不能对给定的元素或属性的数据类型进行定义,而XMLSchema具有一套完整的数据类型系统,它允许对数据类型如整型,时间型或字符串型等进行详细定义。

看了上面的三个优点后,或许你要郁闷了,上面看了DTD原来是浪费时间啊。

虽然DTD可以完全被XMLSchema替代,不过了解下DTD也不是什么坏事啊,而且你也没发多少时间,不是吗。

废话不多说了,我们同样为之前的Contacts.xml文档编写Contacts.xsd,做好心理准备噢。

xs:

schema

xmlns:

xs="

http:

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

elementFormDefault="

qualified"

attributeFormDefault="

annotation>

documentation>

ThisXMLSchemaisfortheContacts.xml<

/xs:

elementname="

Contacts"

complexType>

choiceminOccurs="

0"

maxOccurs="

unbounded"

elementref="

Person"

/>

choice>

element>

sequence>

Name"

type="

string"

Address"

Phone"

simpleType>

restrictionbase="

patternvalue="

[0-9/-]*"

restriction>

Email"

/w+([-+.'

]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*"

attributename="

Sex"

default="

enumerationvalue="

attribute>

Country"

Province"

City"

schema>

在XMLSpy中点击Schema/WSDL可以看到下图:

结构很清晰吧,这样我们可以很清晰的看到结构。

使用XMLSpy编写XSD,你可以不用手写代码(其实在XMLSpy中手写代码很方便,有智能提示),你可以在上面的视图中进行添加或者删除操作,那属于XMLSpy软件的使用不属于小菜讲的范围,如果感兴趣可以看一下:

XMLSPY教程:

该教程将带领您经历一遍XMLSchema的创建、XML文件的创建、编辑和转换、在XML与数据库间进行导入导出以及如何把相关文件组织为一个XMLSPY工程的过程。

在Contacts.xml文档中使用

Contacts

xsi="

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

xsi:

noNamespaceSchemaLocation="

Contacts.xsd"

接下来,我们就来分析下Contacts.xsd文件。

1、

schema 

 xmlns:

xs=“http:

//www.w3.org/2001/XMLSchema” 

 elementFormDefault="

 attributeFormDefault="

/schema>

是所有XMLSchema文件的根结点。

xmlns:

//www.w3.org/2001/XMLSchema”

表示:

XMLSchema中使用的元素和数据类型来自于“http:

命名空间,它也指定了来自于“http:

//www.w3.org/2001/XMLSchema”命名空间的元素和数据类型必须附带前缀“xs:

”。

所以也就有了<

elementFormDefault="

使用该XMLSchema的XML文档所使用的所有元素都必须来自指定的命名空间。

attributeFormDefault="

 同上,把元素换成属性,如果文档中没有用到属性,就无需指定该参数了,默认为unqualified。

Contacts.xml文档使用了Sex属性,所以指定。

2、

 <

提供注释的功能。

3、

element 

name="

  <

choice 

minOccurs="

maxOccurs="

   <

ref="

声明一个元素:

名称为Contacts,它是复合类型。

元素Contacts由子元素Person构成,Person可以出现 0 到 多次

 声明一个元素名称为Contacts

compleyType>

 Contacts元素为复合类型,即由其它元素组成,这里为由元素Person组成。

 minOccurs="

表示Person至少出现0次,maxOccurs="

表示Person出现次数无上限。

/>

表示引用Person元素。

4、

    <

      <

type="

Adress"

        <

          <

restriction 

base="

            <

pattern 

value="

          <

attribute 

default="

restriction

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

当前位置:首页 > PPT模板 > 节日庆典

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

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