开发者学堂课程【XML入门 :Schema 约束 API 查看(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/858
Schema 约束 API 查看
四、对 xmlSchema 的引用
<?xml version="1.0" encoding="utf-8"?>
<note
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/20140213"
xsi:schemaLocation="http://www.itcast.cn/20140213 node.xsd">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
五、使用名称空间引入 Schema
http://www.w3.org/2001/XML Schema就是一个引入空间,http://www.itcast.cn/20151111就是引入地址,它们只能通过 xmlns 来引入,但xmlns 属性都一样,所以要加个别名,别名名称可以随便取,而 xml 就叫名称空间。类似用 java 里面的包名,在很多包下都叫 Document,通过前面的包名来进行区分。再写一个包叫 cn.itcast.test1,在 cn.itcast.test1 里还可以起 Testjaxp.java 名称的 java 文件,但是在一个包里写 Testjaxp.java 是不可以的,包中不可以有两个相同的类名。
六、复杂的 Schema 约束
1.来到 day06 里的资料,资料里有一个复杂的 Schema 案例,把里面的东西复制到 src。把其他的关掉,来到 company.xml,里面引入了两个 Schema,一个是 company 另一个是 department,加了一个别名区分这就叫名称空间,而这里面引入了多个 Schema。
2.在 department.xsd 里约束了 name,这是一个部门名称。在 company.xsd 里company 是一个复杂元素,employee 也是一个复杂元素,在 employee 里也有两个元素,第一个是 any 任意的,第二个是 name 员工名称。
如果在 company.xml 写个部门的名称,约束要用 department.xsd 里的 name。所以在 company.xml 里写 <name>aaa</name>
,这么写是错误的,name里用的是部门里面约束的 name。要在name里写上dept:<dept :name>aaa</dept:name>
。
3.在 department.xsd 改个类型,把 string 改为 int,再来到 company.xml 里 面会报错,因为是 int 如果把 aaa 改为 100就不会出错。这是复杂元素的一个使用,里面使用多个 Schema,通过一个别名或者名称空间,若想使用 Schema 里面的约束,通过别名加上里面约束的元素,可以直接来使用。
4.在一个 src 中可以使用多个 Schema,加个别名来区分,名称随意取都可以但是不能相同。这里面有个约束叫 company 公司,在 company.xsd 的根节点是 company,它是复杂元素。往下看 employee 也是复杂元素它里面有两个元素 any 和 name。回到 company.xml,首先第一个叫 company,第二个叫 employee,在 employee 下可以有两个元素,第一个是任意的,第二个是 name。
现在约束部门的名称,在 department.xsd 里约束,在 department.xml 里写<dept:name>aaa</dept:name>
。在company.xsd里有一个elementFormDefault 里面有一个 qualified 质量良好的。company 起个名字 aa,company 前面也加上 aa:,这样会报错,所以当你设成是质量良好时,根节点里面写了 aa,下面的全部都要写 aa。
七、总结
1.复杂元素指示器
<sequence>:表示元素的出现的顺序
<all>:元素只能出现一次
<choice>:元素只能出现其中的一个
maxOccurs="unbounded" 表示元素的出现的次数
<any></any>:表示任意元素
2.可以约束属性
写在复杂元素里面
写在 </complexType>之前
<attribute name="id1"type="int"use="required"></attribute>
name: 属性名称
type:属性类型 int stirng
use:属性是否必须出现 required
3.复杂的 schema 约束
<company xmlns="http://www.example.org/company"
xmlns:dept="http://www.example.org/department
xmlns:xsi="http://www.w3.orq/2001/XMLSchema-instancen
xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd">
4.引用多个 schema 文件,可以给每个起一个别名
<employee age="30">
<!--部门名称 -->
<dept:name>100</dept:name>
想要引入部门的文件约束里面的 name,使用部门别名 dept:元素的名称。这样可以引入多个 schema。
<!--员工名称 -->
<name>王晓晓</name>
</employee>