Schema约束xml

schema约束介绍:

用于定义和描述xml文档结构与内容的模式语言,其出现是为了克服DTD的局限性
 Schema与DTD相比:
  1、schema符合xml语法结构, dtd语法:<!ELEMENT 元素名称  约束条件>
  2、schema对名称空间支持得非常好,一个xml可以有多个schema,多个schema使用名称空间区分(类似于Java中的包名)
  3、schema比DTD支持更多的数据类型、并支持用户自定义新的数据类型
  4、schema定义约束的能力非常强大,可以对xml实例文档作出细致的语义限制
  5、schema不能像DTD一样定义实体,比DTD更复杂,但schema现在已是w3c组织的标准,它正逐步取代DTD
 
 

 schema的快速入门:

  1、创建一个schema文件,文件的后缀名是.xsd
  必须有一个根节点,根节点是<schema></schema>
  2、关键字:
  All:表示只能出现一次
  Choice:表示只能出现其中一个
  Sequence:表示元素按照顺序出现
  maxOccurs="unbounded":表示出现次数没有限制
  any:表示任意元素 
 
  约束属性:

  <attribute name="" type="" use=""></attribute>

schema文档编辑

<?xml version="1.0" encoding="UTF-8"?>
<!-- xmlns="http://www.w3.org/2001/XMLSchema"这个就表示这个文件是一个约束文档,与被约束文档加以区分 -->
<!-- targetNamespace="url路径"表示可以通过targetNamespace中的url路径(路径可以随便写)引入这个schema文件 -->
<!-- elementFormDefault="qualified":表示质量良好的 -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/1"
	elementFormDefault="qualified">
	<!-- 1、看被约束文件有几个元素,有几个元素写几个element -->
	<!-- 2、区分是简单元素还是复杂元素 -->
	<!-- person是一个复杂元素 -->
	<element name="person">
		<!-- <complexType>:表示一个复杂类型 -->
		<complexType>
			<!-- sequence:表示有序的 -->
			<sequence>
				 <!-- 这里面放子元素
				 maxOccurs="unbounded":表示该元素可以出现多次, maxOccurs:表示该元素可以出现几次 -->
				<element name="name" type="string" maxOccurs="unbounded"></element> 
				<element name="age" type="int"></element> 
			</sequence>
			<!--all:表示里面定义的元素只能出现一次  -->
			<!-- <all>
				<element name="name" type="string"></element>
				<element name="age" type="int"></element>
			</all> -->
			<!-- choice:元素只能出现其中一个 -->
			<!-- <choice>
				<element name="name" type="string"></element>
				<element name="age" type="int"></element>
			</choice> -->
			<!-- 约束属性:name:属性的名称 type:属性的数据类性 use="required":表示必须出现 -->
			<attribute name="id" type="string" use="required"></attribute>
		</complexType>
	</element>
</schema>

xml的引入

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束person.xsd文件 -->
<!-- xmlns="http://www.w3.org/2001/XMLSchema-instance":表示这是一个被约束的文件 -->
<!-- xmlns="http://www.example.org/1":表示引入targetNamespace中的url路径的方式,引入约束文件 -->
<!-- 由于表示被约束文件与约束文件的xmlns会发生冲突,所以要给表示被约束文件的xmlns去一个别名xmlns:xsi -->
<!-- xsi:schemaLocation="{namespace} {location}":{namespace}是targetNamespace中的url路径,{location}是约束文件的路径和名称 -->
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns="http://www.example.org/1"
		xsi:schemaLocation="http://www.example.org/1 person.xsd" id="123">
	<name>zhangsan</name>
	<age>18</age>
</person>


猜你喜欢

转载自blog.csdn.net/above_my_point/article/details/80608128