XML Schema

本文介绍了XML Schema的基本概念及其在XML文档验证中的应用。详细解释了如何通过Schema定义文档结构、元素属性及数据类型等,包括如何引用外部Schema文件以及设置约束。

定义:它的作用是定义一份XML文档的合法组件群,就像文档类型定义(外语缩写:DTD)的作用一样,一份XML Schema定义了:

  • 可以出现在文档里的元素;
  • 可以出现在文档里的属性;
  • 哪些元素是子元素;
  • 子元素的顺序;
  • 子元素的数量;
  • 一个元素应是否能包含文本,或应该是空的;
  • 元素和属性的数据类型;
  • 元素和属性的默认值和固定值。

schema规范中:

1.所有标签和属性都需要有schema文件来定义

2.所有的schema文件都需要有一个id,但他在这里叫namespace

3.namespace里面的值由什么来指定?

由targetNamespace属性来指定,他的值是一个URL(很有可能不存在)

4.如何引入一个schema约束?

属性?:使用xmlns属性

属性值:对应的schema文件的id(namespace值)

 5.如果引入的约束不是w3c组织定义的,必须指定schema文件的位置

 6.schema文件的位置由什么属性来指定?

 属性?:schemaLocation

 属性值: namespace path

 7.如果引入了N个约束,需要给n-1个取别名

schema约束中重点:

namespace:

 相当于schema文件中的id

 targetNamespace属性:

 用来指定schema文件的namespace的值

 xmlns属性:

 引入一个约束,它的值是一个schema文件的namespace

 schemaLocation属性:

 用来指定引入的schema文件的位置

demo:

book.xsd:

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.atguigu.cn" 
    elementFormDefault="qualified">
  <element name="书架">
  	<complexType>
  		<sequence maxOccurs="unbounded">
  			<element name="书">
  				<complexType>
  					<sequence>
  						<element name="书名" type="string"></element>
  						<element name="作者" type="string"></element>
  						<element name="售价" type="string"></element>
  					</sequence>
  				</complexType>
  			</element>
  		</sequence>
  	</complexType>
  </element>
</schema>
book.xml:
<?xml version="1.0" encoding="UTF-8"?>
<tt:书架 xmlns:tt="http://www.atguigu.cn"
	 xmlns:dd="http://www.w3.org/2001/XMLSchema"
	 dd:schemaLocation="http://www.atguigu.cn book.xsd">
	<tt:书>
		<tt:书名>西游记</tt:书名>
		<tt:作者>吴承恩</tt:作者>
		<tt:售价>99.00元</tt:售价>
	</tt:书>
</tt:书架>




XML SchemaXML模式,是一种基于XML语法的用于定义XML文档结构和数据类型的机制。 ### 语法规则 XML Schema的语法基于XML,需要遵循XML的基本规则。例如一个简单的XML Schema示例如下: ```xml <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> ``` 此示例定义了一个名为`person`的元素,它包含`name`(字符串类型)和`age`(整数类型)两个子元素 [^2]。 ### 与DTD对比优势 在数据类型支持方面,尽管DTD在早期XML应用中发挥了重要作用,但随着XML技术的发展,XML Schema逐渐成为数据类型定义的首选。XSD的强大功能和灵活性使得它能够在广泛的业务场景中满足复杂的数据处理需求 [^3]。 ### 局限性 XML Schema 1.0没有提供任何支持共同约束的功能。在将XML文档加载到内存后,用户有时必须编写Java™或C代码来进行检查,这会损害可维护性,并使架构的互操作性降低。一些用户从其他XML验证语言(例如Schematron和Relax NG)寻求帮助,以获取共约束支持,这使他们本来基于XSD的体系结构变得复杂 [^4]。 ### 使用意义 在实际开发中,理解并熟练应用XML Schema和JAXB,可以极大地提高数据处理的效率和质量。同时,合格XML的使用习惯也能避免在数据交换中可能出现的混淆和错误 [^1]。 ### 使用方法 使用XML Schema时,首先要编写符合其语法规则的模式文件,然后在XML文档中引用该模式文件,以验证XML文档是否符合模式定义。例如在XML文档中可以通过`xsi:schemaLocation`属性来引用对应的Schema文件。 ### 应用场景 XML Schema适用于需要精确控制XML文档结构和数据类型的场景,如企业级应用的数据交换、Web服务的数据传输等,能够确保数据的准确性和一致性,满足复杂的数据处理需求 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值