热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初识XML(三)Schema

在上一篇文章中我们讲述了XML的约束者DTD,它规定了XML文件的书写规范,任何遵循指定DTD规则的XML文件都将受到严格监控,可以说DT

在上一篇文章中我们讲述了XML的约束者DTD,它规定了XML文件的书写规范,任何遵循指定DTD规则的XML文件都将受到严格监控,可以说DTD是XML文件的监督者。而今天我们要讲的Schema又是什么呢?简单来讲,Schame是一种语言,与DTD相似,同样用于描述和规范XML文档的逻辑结构。但是与DTD相比它又有着明显的优势,因此Schame被普遍认为是DTD的取代者。下面我们就来了解一下与DTD相比,Schame到底有何优势。

 

1.      Schame可针对未来的需求进行扩展。

2.      Schame与DTD相比更加完善,功能更强大。

3.      Schame是基于XML编写的,本身就是一个有效的XML文档,因而可以更直观的了解XML的结构。

4.      Schame支持命名空间。

5.      Schame内置多种简单和复杂的数据类型,并支持自定义数据类型。

 

既然Schame有这么多的优点,那我们就通过实例来具体讲解一下Schame是怎样使用的(以NetBeans IDE为例讲解,在其他IDE环境中类似)。

1.      首先用记事本新建一个txt文件命名为email。

2.      打开记事本编辑如下内容并保存:






其中有以下几点需要说明一下:

       a.  中的“schema”表示该文件的根元素是

       b. “xmlns:xs="http://www.w3.org/2001/XMLSchema"”表示中用到的元素和数据类型来自命名空间“http://www.w3.org/2001/XMLSchema”,同时规定来自该命名控件的元素和数据类型应该使用前缀xs。

       c. “ ”,标签之间嵌着”to”,”from”等五个元素,表名遵循该xsd规则的xml文件必须以email标签开始,email标签之间嵌着”to”等五个元素。

       d.  表示该xsd文件定义了复杂类型的数据。

       e.  表示遵循该规则的xml文件中以上”to”等五个嵌入标签的顺序不能混乱。

       f.  更多xsd元素解释请参见:http://baike.baidu.com/view/1374119.htm


3.将保存后的email.txt文件更改后缀名为email.xsd文件。这样一个Schame文件建造完毕。

4. 在NetBeans中新建项目SchameApplication,将email.xsd文件拖到该项目“web页”文件夹中。然后在该文件加下建立xstTest.xml文件。

5.在xsdTest.xml文件中指定该文件遵循email.xsd规范,并编辑内容如下:


liuwei@163.comliuwei@163.comliuwei@163.com2013-01-13


建立好xsdTest.xml文件后,右键单击该文件,选择“验证XML”,此时在输出栏中将会出现验证结果,当然我们建立的xsdTest文件是遵循了xsd规范的xml文件,验证是通过的。如果我们向验证一下xsd文件是否对xmlTest.xml起作用,可以人为改动任意两个元素的位置,比如将”to”和”from”互换位置,此时以同样的方法再次验证该xml文件,你会发现在输出栏中将会给出提示“cvc-complex-type.2.4.a: 发现了以元素 'to' 开头的无效内容。应以'{from}' 之一开头。 [4]”提示,这表明我们的xsd文件确实起到了规范xml文件逻辑结构的作用。





推荐阅读
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
verde公寓_401
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有