XML Schema

原创 2012年03月24日 09:54:07

上面我们讨论了用DTD来验证XML文档,虽然DTD胜任对XML文档结构的验证,但是它有很多局限。为此,微软提出了Schema的方案来改进DTD。Schema从字面意义上来说,可以翻译成架构,它的基本意思是为XML文档制定一种模式。Schema相对于DTD的明显好处是XML Schema文档本身也是XML文档,而不是像DTD一样使用自成一体的语法。这就方便了用户和开发者,因为可以使用相同的工具来处理XML Schema和其他XML信息,而不必专门为Schema使用特殊的工具。Schema简单易懂,懂得XML语法规则的人都可以立刻理解它。Schema的概念提出已久,但W3C的标准最近才出来,相应的应用支持尚未完善,但采用Schema已成为XML发展的一个趋势。

请看下例:<movie.dtd>

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT movie (daoyan,zhuyan)>
<!ELEMENT daoyan (#PCDATA)>
<!ELEMENT zhuyan (#PCDATA)>
<movie.xsd>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="daoyan" type="xs:string" />
	<xs:element name="zhuyan" type="xs:string" />
	<xs:element name="movie">
		<xs:complexType>
			<xs:choice maxOccurs="2">
				<xs:element ref="daoyan" />
				<xs:element ref="zhuyan" />
			</xs:choice>
		</xs:complexType>
	</xs:element>
</xs:schema>
<moviedtd.xml>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE movie SYSTEM "D:\java\xml\movie.dtd">
<movie>
	<daoyan>张艺谋</daoyan>
	<zhuyan>刘德华</zhuyan>
</movie>
<moviexsd.xml>
<?xml version="1.0" encoding="UTF-8"?>
<movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="D:\java\xml\movie.xsd">
	<daoyan>张艺谋</daoyan>
	<zhuyan>刘德华</zhuyan>
</movie>

从上例可看出这两个XML文当格式完全是一样的。只不过采用的模式文档不一样,一个是DTD 一个是 XML Schema。

在XML Schema中,元素是通过它的名字和类型来确定的。名称就是该元素的名字,类型就像JAVA中的一个变量,有基本类型(int double char等),有复杂类型(类类型)。在Schema中也是一样,类型(type)可以分为两种形式,一种是简单类型,一种是复合类型。简单类型不能包含元素和属性。复杂类型不仅可以包含属性,而且可以在其中嵌套其他的元素,或者可以和其他元素中的属性相关联。


使用schema校验xml

一、背景  在大型的项目开发中,我们往往要是用xml进行一些规范化的处理。这时候就需要有高手先做好上层的一些规则。这时候往往就会用到schema对xml进行一个规范化的校验  二、代码实践  ...
  • gxsenjoy
  • gxsenjoy
  • 2016年12月02日 14:53
  • 672

XML Schema基本用法

Schema与DTD一样,都是对xml文件的规范和约束,但是Schema比DTD更加细粒度、数据类型更多、功能更加强大,所以现在大多数都选择Schema。Schema也是一个XML文件,因此编写Sch...
  • u013516966
  • u013516966
  • 2015年01月26日 13:37
  • 1707

跟我学XML Schema(转)

中国XML论坛里的一片帖子如何写一个最简单的XML Schema文档呢? 首先,我们写出一个最简单的XML文档.hello.xml------------------- Hello World!!(一...
  • Jofee
  • Jofee
  • 2005年01月16日 03:18
  • 1591

schema、dtd、xml之间的关系

schema的专业叫法是模式,每一个web.xml都要 ============ schema和dtd都是对xml文件的进一步约束: 1xml文件中可以用哪些元素,如引用了web-app_2.4.xs...
  • Ideality_hunter
  • Ideality_hunter
  • 2016年05月29日 15:27
  • 2929

xml:schema详解

XMLSchema 详解 博客分类:  XML XML数据结构正则表达式Struts  什么是Schema?  在计算机软件中,Schema这个词在不同的应用中有不同的含...
  • yippeelyl
  • yippeelyl
  • 2016年05月20日 15:13
  • 784

xml schema与xml dtd文件相比较的优点

1、DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系,也就是说DTD文档本身并不是一个良好形式的XML文档 ;而用户在使用XML Schema的时候,不需要为了理解XML Schema...
  • yuxiao98
  • yuxiao98
  • 2012年10月19日 16:00
  • 1472

在 XML 文档中引用 Schema

最近在看java ee相关的东西,配置xml肯定是经常要做的一个事情,而配置xml当然是有规则的。 xml Schema 的作用是定义 xml 文档的合法构建模块,类似 DTD,所以Schema 的...
  • lewif
  • lewif
  • 2017年03月10日 23:16
  • 1054

XML Schema学习教程(一)-XML Schema介绍

Introduction to XML Schema [XML Schema介绍]翻译:linqingfeng 英语原文: http://www.w3schools.com/schema/defaul...
  • linqingfeng
  • linqingfeng
  • 2006年05月02日 01:09
  • 2304

XML:Schema、三种编写Schema的方式

针对DTD文件的不足之处:(不能出现相同名称的元素,DTD的语法不是xml的语法)出现的Schema,需要使用什么命名空间的东西就先引入,使用xmlns,后面加后缀,不加就不用后缀 定义Sc...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2015年12月21日 15:51
  • 1865

关于一个xml schema校验问题的解决办法

今年的一个项目用到了xml的schema校验。但是在使用的过程中遇到了一个问题: schema在控制字符串长度的时候用的是字符个数,比如 "abc"  和 “我爱你” 的长度都是3。但是按照字节来算。...
  • shuishouhcd
  • shuishouhcd
  • 2014年01月13日 18:11
  • 1293
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML Schema
举报原因:
原因补充:

(最多只允许输入30个字)