Schema

1、什么是Schema

Schema是新的XML文档约束;

Schema要比DTD强大很多,是DTD替代者:

Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。

Schema功能更强大,数据类型更完善

Schema支持名称空间

2、Schema重点要求

与DTD-样,要求可以通过schema约束文档编写xml文档。常见框架使用schema的有: Spring

通过提供"web-app_2_ 5.xsd" 编写xml文档:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	模拟servlet2.5规范,如果开发人员需要在xml使用当前Schema约束,必须包括指定命名空间。
	格式如下:
	<web-app xmlns="http://www.example.org/web-app_2_5" 
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
			version="2.5">
-->
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
	targetNamespace="http://www.example.org/web-app_2_5"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:tns="http://www.example.org/web-app_2_5" 
	elementFormDefault="qualified">
	
	<xsd:element name="web-app">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="servlet">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="servlet-name"></xsd:element>
							<xsd:element name="servlet-class"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="servlet-mapping">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="servlet-name"></xsd:element>
							<xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="welcome-file-list">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="version" type="double" use="optional"></xsd:attribute>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

案例文档中同一个“命名空间”分别使用“默认命名空间”和“显示命名空间”进行引入,所以文档中<schema>和<xsd:schema>作用一样。

3、案例实现

4、命名空间(语法)

(1)什么是命名空间

如果一个XML文档中使用多个Schema文件,而这些Schema文件中定义了相同名称的元素时就会出现名字冲突。这就像一个Java文件中使用了import javautil."和import java.sq.*时,在使用Date类时,那么就不明确Date是哪个包下的Date了。

总之名称空间就是用来处理元素和属性的名称冲突问题,与Java中的包是同一用途。如果每个元素和属性都有自己的名称空间,  那么就不会出现名字冲突问题,就像是每个类都有自己所在的包一样,那么类名就不会出现冲突。

 

(2)约束文档和XMl关系

当W3C提出Schema约束规范时,就提供“官方约束文档”。我们通过官方文档,必须“自定义schema约束文档”,开发中“自定义文档”由框架编写者提供。我们提供“自定义文档”限定,编写出自己的xml文档。

(3)声明命名空间

 

默认命名空间: SXXX xmIns='>,使用<标茎>

显式命名空间: <XXX xmlns: 别名=种”>,使用<别 名:标签>

 

实例: web-app_ 2. _5.xsd:

<xsd:schema xmins:xsd="http://ww.w3.org/2001/ XMLSchema"

  表示自定又schema约東文档引用官方文档作为显示命名空间。如果要使用官方提供的元素或属性,必须使用xsd前缀《自定义,此处表示官方文档,所以使用xad)

  <zsd:schema>标签就有官方文档提供,默认命名空间直接使用。

 

实例: web.xml:

<web-app xmIns=http:/ /www. example.org/web-app_2_5

  表示xml文档引用“自定义约束文档”作为默认命名空间因为使用默认命名空间,<web app>直接使用

 

(4)其他介绍

自定义约束: web-app 2. 5.xsd

  <xsd: schema targetNamespace-http:/ /wWH example. orgl web-app25

  表示给当前自定义约束文档进行起名,提供给xml文档使用。

 

  xml文档: web.xml

<web- app

  xmIns:xsi-"http://www. w3. org/ 2001/XMLschema- instance"

  xsi: schemaLocat ion=http:// Www. exanple. org/web-app 2_5 web-app 2.5.xed

  xmlns:xsi=""固定写法

  表示是一个schema实例文档,就是被schema文档约束的xm1文档。xsi:schemaLocat ion="名称路径  名称路径  名称路径”

  表示用于确定当前xml文档使用到的schema文档的位置。“名称路径”是成对出现,与xmIns引用命名空间对应。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值