xml——04(Schema约束)

1、Schema约束与dtd区别

  • dtd语法: <!ELEMENT 元素名称 约束>, schema符合xml的语法,xml语句
  • 一个xml中可有多个schema,多个schema使用名称空间区分(类似于java包名)
  • dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型
    比如 年龄 只能是整数,在schema可以直接定义一个整数类型
  • schema语法更加复杂,schema目前不能替代dtd

2、Schema基本语法

创建一个schema文件 后缀名是 .xsd
根节点 <schema></schema>

在schema文件里
属性

   1、xmlns=“http://www.w3.org/2001/XMLSchema
            - 表示当前xml文件是一个约束文件
    2、targetNamespace=“http://www.itcast.cn/20151111
            - 使用schema约束文件,直接通过这个地址引入约束文件
    3、elementFormDefault=“qualified”

步骤

(1)看xml中有多少个元素 <element>
(2)看简单元素和复杂元素
(3)如果复杂元素,简单元素,写在复杂元素的里面

//如果复杂元素,简单元素,写在复杂元素的里面
	<complexType>
    			<sequence>
    				子元素
    			</sequence>
    	</complexType>
eg:
 <element name="person">
    	<complexType>
    	    <sequence>
    		<element name="name" type="string" maxOccurs="unbounded"></element>
    		<element name="age" type="int"></element>
    	    </sequence>
    	</complexType>
  </element>

(4)在被约束文件(xml文件)里面引入约束文件(.xsd文件)

<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xmlns="http://www.itcast.cn/20151111"
			xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">

** xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	-- 表示xml是一个被约束文件
** xmlns="http://www.itcast.cn/20151111"
	-- 是约束文档里面 targetNamespace
** xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">
	-- targetNamespace 空格  约束文档的地址路径

在这里插入图片描述

指示器:
<sequence>:表示元素的出现的顺序
<all>: 元素只能出现一次
<choice>:元素只能出现其中的一个
maxOccurs="unbounded": 表示元素的出现的次数,unbounded:表示可以出现无数次
<any></any>:表示任意元素

可以约束属性
	写在复杂元素里面,写在 </complexType>之前
	<attribute name="id1" type="int" use="required"></attribute>
		- name: 属性名称
		- type:属性类型 int stirng
		- use: 属性是否必须出现 required
* 复杂的schema约束
	<company xmlns = "http://www.example.org/company"
	xmlns:dept="http://www.example.org/department"
	xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd" 

引入多个schema文件,可以给每个起一个别名

<employee age="30">
	<!-- 部门名称 --> 
	<dept:name>100</dept:name>
	* 想要引入部门的约束文件里面的name,使用部门的别名 detp:元素名称
	<!-- 员工名称 -->
	<name>王晓晓</name>   
</employee>

XML和Schema命名空间详解

XML和Schema命名空间详解—实例篇

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值