最近公司需要使用到WebService技术,之前没学过,边学边实践,也整理下学习笔记,一来巩固学习成果,二来加深印象。
目录
一、schema规范
在正式学习webservice之前,需要先了解下schema规范,方便后面的学习。
1. 概要
DTD和Schema都是用来约束XML的,但是Schema表现得更加出色,,这里我们只学习schema,那么什么是XML约束?
– 在XML技术里可以编写一个文档(文件)来约束一个XML文档的书写规范,这称之为XML约束。最常见的是spring的xml配置文件,我们只能写人家规定好的标签而不能随意增加标签,这就是XML约束。
2. 创建schema文件
新建一个普通工程,在resources文件夹下创建home.xsd文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/bookschema" elementFormDefault="unqualified" >
<element name="家庭">
<complexType>
<sequence maxOccurs="unbounded">
<element name="家庭成员">
<complexType>
<sequence>
<element name="爸爸" type="string" />
<element name="妈妈" type="string" />
<element name="姐姐" type="string" />
<element name="弟弟" type="string" />
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
参数名 | 说明 |
---|---|
targetNamespace | 每个schema文档都应该赋予一个唯一的id,这里称为命名空间。命名空间的值用URI表示,而这个URI大多数情况都不存在,只是我们自己定义的,用来表示命名空间的一个值而已。 |
elementFormDefault | 用来指定schema文档中的元素和属性是否都关联到命名空间, true-关联所有/false-仅关联根元素。 |
xmlns | xmlns(XML nameSpace)是用来引入schema约束的, 这里我们在写约束文件的时候也引用了w3c组织定义的标签和属性, 它的命名空间就是http://www.w3.org/2001/XMLSchema |
3.引用schema约束文件
创建一个home.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<家庭 xmlns="http://www.example.com/homeSchema"
xmlns:dd="http://www.w3.org/2001/XMLSchema-instance" dd:schemaLocation="http://www.example.com/homeSchema home.xsd">
<家庭成员>
<爸爸>张三</爸爸>
<妈妈>李四</妈妈>
<爷爷>张五</爷爷>
<奶奶>赵六</奶奶>
</家庭成员>
</家庭>
参数说明:
4.总结
schema规范中:
1. 所有标签和属性都需要有schema文件来定义
2. 所有的schema文件都需要有一个id, 但在这里它叫namespace,
3. namespace的值由什么来指定?
由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)
4. 如何引入一个Schema约束?
属性? : 用xmlns属性
属性值: 对应的schema文件的id(namespace值)
5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置
6. schema文件的位置由什么属性来指定?
属性? : schemaLocation
属性值: namespace path
7. 如果引入了N个约束, 需要给n-1个取别名