开发者学堂课程【XML入门 :Schema 约束 API 查看(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/858
Schema 约束 API 查看
内容介绍
一、xmlSchema 文档基本结构
二、xmlSchema 复杂元素指示器
三、Schema 入门案例
四、对 xmlSchema 的引用
五、使用名称空间引入 Schema
六、复杂的 Schema 约束
七、总结
一、xmlSchema 文档基本结构
Schema 的结构:
它的根节点是 Schema,里面要加上三个属性。使用时首先要判断它是简单元素还是复杂元素,如果是一个复杂元素,先写 complexType 在写 sequence 然后再写上子元素。如果是简单元素就直接写 element。
二、xmlSchema 复杂元素指示器
1.<sequence>:表示元素的出现的顺序
在1.xsd 里写了 sequence 表示 Schema 的一个指示器,除了写 sequence 还有其他写法,sequence 表示元素的出现的顺序,把 person.xml 里的 age 放在第一个会报错,放在第二个就所以 sequence 元素出现必须按照顺序来写。
(1)ALL: 表示只能出现一次
在1.xsd 里把 sequence 注释掉,写上 all,回到 person.xml 加上 name 会出现报错,所以 all 表示元素只能出现一次。
(2)choice: 表示只能出现其中的一个
<name>zhangsan</name>
<!--<name>zhangsan</name>-->
<age>20</age>
</person>
在1.xsd 里先注释 all,再写入 choice,然后就看到在 person.xml 出现报错(只能出现 name 和 age 其中一个)
<!--<name>zhangsan</name>-->
<!--<name>zhangsan</name>-->
<age>20</age>
</person>
注释掉 age 保存,没报错;choice 表示只能出现 name、age 中的一个,把 age 拿开,name 去掉保存就没问题了。
(3)maxOccurs="unbounded": 表示元素出现次数没限制
在1.xsd 里的 element 中写
例:<element name="name" type="string" maxOccurs="unbounded"></element>
出现的次数,unbounded 出现无数次,在 person.xml 中在写一个一样的 name,没有报错,再来三个 name 也没问题。
(4)any:表示任意元素。
2.在 Schema 里可以约束属性
(1)attribute 可以约束属性,但是属性必须是复杂元素,在1.xsd 的complexType 里写。
(2)写在一个复杂元素里面
(3)写在</complexType>之前
(4)写法:
<attribute nane="id1" type="int" use="required">name
写上属性的名称,type 数据类型,use 属性是否必须要出现 required 必须,看 person.xml 报错了,因为它里面有个属性叫 id1,在 xsd:里加入 id1="123" 保存,发现没有错误。
(5)属性的定义:
①name: 属性名称
②type: 属性类型 int stirng
③use: 属性是否必须出现 required
三、Schema 入门案例
1.案例分析
<?xml version="1.0" encoding="utf-8"?>
<schema //schema
是根节点
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/20140213"
elementFormDefault="qualified">
<element name="note">
//note 这是复杂元素,因为下面有 complexType
<complexType>
<sequence>
//下边的元素(element)要按顺序出现。
<element name="to" type="string" />
<element name="from" type="string" />
<element name="heading" type="string" />
<element name="body” type="string" />
</sequence>
</complexType>
</element>
</Schema>