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
    评论
添加DTD约束: 1. 在xml文件的开头添加以下代码: ```xml <!DOCTYPE 根元素名 SYSTEM "dtd文件路径"> ``` 其中,根元素名是xml文件中根元素的名称,dtd文件路径是DTD文件所在的路径。 2. 创建一个名为dtd文件的文件,然后在文件中定义DTD。例如: ```xml <!ELEMENT 根元素名 (子元素名1, 子元素名2, 子元素名3)> <!ELEMENT 子元素名1 (#PCDATA)> <!ELEMENT 子元素名2 (#PCDATA)> <!ELEMENT 子元素名3 (#PCDATA)> ``` 其中,根元素名是xml文件中根元素的名称,子元素名1、子元素名2和子元素名3是根元素的子元素名称,#PCDATA表示文本节点。 添加Schema约束: 1. 在xml文件的开头添加以下代码: ```xml <根元素名 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema文件路径"> ``` 其中,根元素名是xml文件中根元素的名称,schema文件路径是Schema文件所在的路径。 2. 创建一个名为schema文件的文件,然后在文件中定义Schema。例如: ```xml <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="根元素名"> <xs:complexType> <xs:sequence> <xs:element name="子元素名1" type="xs:string"/> <xs:element name="子元素名2" type="xs:string"/> <xs:element name="子元素名3" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> ``` 其中,根元素名是xml文件中根元素的名称,子元素名1、子元素名2和子元素名3是根元素的子元素名称,xs:string表示该元素的类型为字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值