xmlspy教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

(一)、XML概览首先让我们下载一个XML编辑器:XMLSpy2005企业版下载破解方法及其教程当然你也可以不用XMLSpy编辑器,使用记事本,或者vs2005等等,这取决于你的个人喜爱。小菜只是想说:如果你使用下XMLSpy,你就会喜欢上它,小菜今天是第一次使用就爱上它了。小菜不骗人的。:)1、使用记事本创建一个XML文档(通讯录)Contacts.xmlContactsPersonSex=男Name小陈/NaneAddressCountry中国/CountryProvince福建/ProvinceCity福州/City/AddressPhone110/PhoneEmail小陈@gmail.com/Email/PersonPersonSex=女Name小林/NameAddressCountry中国/CountryProvince福建/ProvinceCity福州/City/AddressPhone112/PhoneEmail小林@gmail.com/Email/Person/ContactsXML文档就这么简单,你应该树立起信心。如果你仔细看一下上面的XML文件你会发现有个错误:Name小陈/Nane结束标记与开始标记不匹配小菜想看看XML文档是否真的严谨。使用IE浏览器打开它。看来不错,XML设计的很严谨。2、使用XMLSpy创建上面的XML文档(通讯录)Contacts.xml上面使用记事本+浏览器,构成了我们的开发平台。不仅麻烦,而且视觉效果很差。接下来我们来使用一下XMLSpy。点击Browser会自动提示错误,并且定位到Nane结点。确实方便不是吗?(XMLSpy应该给我颁个奖,这么卖力的帮它宣传)3、XML也需要约束XML太方便了,以至于所有人都能打开XML文档修改一番。这也就产生了一个问题,怎么保证XML文档结构良好。如果阿扁(也就是欠扁的人)想恶作剧一下,修改了XML文档。把小陈的Sex修改为PersonSex=不男不女添加了结点傻瓜你是傻瓜吗?/傻瓜在Browser中正常显示出了PersonSex=不男不女和傻瓜你是傻瓜吗?/傻瓜,由于你并没有对该XML文档进行相应的约束,所以根本没有错误可言。看来真是糟糕透了,如果被小陈发现了,一定会来个人肉搜索把那该死的阿扁找出来。可见我们需要对XML文档进行约束,所谓无规矩不成方圆。约束XML文档的方式主要有两种:DTD(DocumentTypeDefinition)文档类型定义XSD(XMLSchemaDefinition)XML模式定义(二)、DTD(DocumentTypeDefinition)文档类型定义1、DTD包含在XML中:Contacts.xml?xmlversion=1.0encoding=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)]ContactsPersonSex=不男不女傻瓜你是傻瓜吗?/傻瓜Name小陈/NameAddressCountry中国/CountryProvince福建/ProvinceCity福州/City/AddressPhone110/PhoneEmail小陈@gmail.com/Email/PersonPersonSex=女Name小林/NameAddressCountry中国/CountryProvince福建/ProvinceCity福州/City/AddressPhone112/PhoneEmail小林@gmail.com/Email/Person/Contacts使用XMLSpy点击Browser会提示错误:定位到出错位置:Sex=不男不女在我们的DTD代码中有:!ATTLISTPersonSex(男|女)男说明了:Sex为Person元素的属性,为枚举类型,值只能为“男”或“女”,默认值为“男”改正:将其修改为男。点击Revalidate重新验证。定位到出错位置:傻瓜你是傻瓜吗?/傻瓜在我们的DTD代码中没有声明该元素,所以提示错误,将其删除。点击Revalidate重新验证。现在没有错误了。接下来就来说说DTD中的基本语法:!DOCTYPEContacts[]表示根结点为Contacts。注意这是当DTD包含在XML中使用的。如果XML是引用外部的DTD文件,就不是这样了,下面会说道。!ELEMENTContacts(Person*)ELEMENTContacts表示声明元素Contacts,这样就允许XML文档中出现Contacts/ContactsContacts(Person)表示元素Contacts包含子元素Person,这样就允许XML文档中出现ContactsPerson/Person/ContactsPerson*表示Person可以出现0次到多次Person+表示元素Person可以出现1次到多次Person?表示元素Person可以出现0次到1次!ELEMENTPerson(Name,Address,Phone,Email)ELEMENTPerson表示声明元素PersonPerson(Name,Address,Phone,Email)表示Person包含元素Name,Address,Phone,Email而且顺序也固定了。!ATTLISTPersonSex(男|女)男ATTLISTPersonSex表示为Person元素声明属性Sex,为枚举类型,值为:男或者女,默认值为“男”!ELEMENTName(#PCDATA)声明元素Name,#PCDATA表示:Name元素不包含其他子元素而只包含字符数据的元素。!ELEMENTAddress(Country,Province,City)!ELEMENTCountry(#PCDATA)!ELEMENTProvince(#PCDATA)!ELEMENTCity(#PCDATA)!ELEMENTPhone(#PCDATA)!ELEMENTEmail(#PCDATA)和上面的差不多。还有一些常用的也附带说下:比如有个XML文档中有个结点:imageid=image1src=image1.jpgwidth=200height=300/image要求就省了,直接看对应的dtd代码吧。!ELEMENTimageEMPTY声明元素image,EMPTY表示元素不含有字符数据或子元素,只有属性。如果出现imagexxx/image提示错误!ATTLISTimageidID#IMPLIED为image元素声明属性id,ID表示属性id为在DTD指定的XML文档中唯一,#IMPLIED表示可以有属性id也可以不出现。如果出现imageid=image1/imageimageid=image1/image出错。!ATTLISTimagesrcCDATA#REQUIRED为image元素声明属性src,CDATA表示src属性的类型为字符数据,#REQUIRED表示src属性是必须的,必须出现。!ATTLISTimagewidthCDATA#REQUIRED!ATTLISTimageheightCDATA#REQUIRED和上面的差不多。常用的差不多都说了,XMLSpy中也带了几个例子,大家有时间也可以看看。了解了上面的内容后,阅读XMLSpy中的例子代码应该不存在问题。大家可以使用XMLSpy,建个XML文档和DTD,试一下,就都明白了,实践是理解事物最好的途径。2、XML文档引用外部DTD文件创建Contacts.dtd文件?xmlversion=1.0encoding=UTF-8?!ELEMENTContacts(Person*)!ELEMENTPerson(Name,Address,Phone,Email)!ATTLISTPersonSex(男|女)男!ELEMENTName(#PCDATA)!ELEMENTAddress(Country,Province,City)!ELEMENTCountry(#PCDATA)!ELEMENTProvince(#PCDATA)!ELEMENTCity(#PCDATA)!ELEMENTPhone(#PCDATA)!ELEMENTEmail(#PCDATA)创建Contacts.xml文件?xmlversion=1.0encoding=UTF-8?!DOCTYPEContactsSYSTEMContacts.dtdContactsPersonSex=男Name小陈/NameAddressCountry中国/CountryProvince福建/ProvinceCity福州/City/AddressPhone110/PhoneEmail小陈@gmail.com/Email/PersonPersonSex=女Name小林/NameAddressCountry中国/CountryProvince福建/ProvinceCity福州/City/AddressPhone112/PhoneEmail小林@gmail.com/Email/Person/Contacts只需使用:!DOCTYPEContactsSYSTEMContacts.dtd就搞定了,DOCTYPEContacts表示根结点ContactsSYSTEM后跟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,做好心理准备噢。?xmlversion=1.0encoding=UTF-8?xs:schemaxmlns:xs==qualifiedattributeFormDefault=qualifiedxs:annotationxs:documentat

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功