Android学习日记-schema相关知识

来源:互联网 发布:php倒着做乘法表 编辑:程序博客网 时间:2024/05/16 04:31

XML  Schema,称为可扩展标记语言架构,是以可扩展标记语言标准通用标记语言的子集)为基础的,它用于可替代文档类型定义(即DTD);一份XML schema文件描述了可扩展标记语言文档的结构。

schema的作用就是定义一个XML文件的合法组件群,schema能定义:

1.可以出现在文档里的元素;

2.可以出现在文档里的属性;

3.哪些元素是子元素;

4.子元素的顺序;

5.子元素的数量;

6.一个元素应是否能包含文本,或应该是空的;

7.元素和属性的数据类型

8.元素和属性的默认值和固定值。


怎么创建一个XML  schema文件?

创建一个xml文件时,将后缀名改成xsd。

schema相关基础知识:

1.当xsd创建完成后,要以<schema></schema>为根标签。然后需要在schema标签中添加命名空间:

1.1首先引入xmlns:xs="http://www.w3.org/2001/XMLSchema"。

1.2targetNameSpace="http://www.zhang.com/newschema"声明一个我们自己的命名空间(uri)。

1.3还要写入  xmlns:myns="http://www.zhang.com/newschema"。

1.4elementFormDefault="qualified"表明要我们严格按照schema文档约束我们要编写的xml文件。

eg:<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.zhangl.org/newschema"
xmlns:tns="http://www.zhang.org/newschema"
elementFormDefault="qualified">

</schema>


2.当xsd文件完成,就需要将schema文档引入要约束的xml文件: 

2.1xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"要引入我们的shema文档需要使用这个命名空间中的属性。

2.2xsi:schemaLocation="http://www.zhang.org/feicuischema newschema.xsd" 使用上面引入的命名空间xsi中的schemalocation读取我们的schema文档,首先要填入我们的schema文档的命名空间的uri,然后空格,再填入我们的schema文档的名字。
2.3在通过引入命名空间的方法,将我们的schema文档的命名空间引入。

3.在xsd文件中定义一个简单元素:

<element name="xxx"  type = "yyy">

其中xxx表示元素名称 yyy是元素的数据类型(string字符串   decimal小数  integer整数  boolean逻辑值 date日期  time时间 )

4.对简单元素内容的约束:

4.1首先在我们要约束的元素中添加一个simpleType的标签
4.2然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的。
4.3在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
4.3.1枚举约束 enumeration 
4.3.2对大小值的限定 mininclusive 设定最小值,这种包含最小值的
   minEnclusive 设定最小值,但是不包含最小值
   maxinclusive 设定最大值,包含最大值
   maxEnclusive 设定最大值,但是不包含最大值
4.3.3样式约束
[a-zA-Z]这一位字符,在a-z的大小写中任选一个填入
male|female这里需要多选一来填入信息内容
([a-z][0-9])+  这里小写字母+一位数字的格式重复(可以1次可以多次)

5.复合元素的约束:

5.1首先我们在要约束的元素中添加一个complexType的标签。

5.2然后我们要填入指示器(eq:sequence)。

5.3添加子元素,子元素可以使复合元素也可以使简单元素。


6.属性定义

   6.1简单的元素没有属性。当元素含有属性时,它会被认为是复合元素。但属性本身总是被声明为简单类型。

   6.2定义的格式:<xs:attribute name="xxx" type="yyy"/>
6.3属性定义可以定义在complexType中
6.4属性定义中use表示这个属性是否需要出现在元素中
optional:可出现可不出现
prohibited:不能出现
required:必须出现
6.5如果要在简单元素中添加属性,还是需要complexType,只是我们需要在这个标签中使用simplecontent标签,其中使用extension标签,用来扩展我们的简单元素,添加属性。


7.顺序指示器
7.1  sequence(按顺序):指定了子元素必须出现并且要按照定义的顺序依次出现。 
7.2  all(全部):指定了子元素可以以任意顺序出现,只出现一次。
7.3  choice(选择):指定子元素中,仅可以出现一个(可以使用maxOccurs修改)

8.数量指示器,这种指示器不是以元素(标签)的形式出现,而是以子元素的属性的方式出现。 minOccurs 设置出现的最少次数;maxOccurs设置出现的最多次数

1 0
原创粉丝点击