XML Schema

(1)Schema内置类型

->字符串类型

<strlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="string.xsd">
</strlist>

->数值类型

<numberlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="number.xsd">
</numberlist>

->日期时间类型

<date_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="date.xsd">
</date_list>

->boolean类型

<boolean_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="boolean.xsd">
</boolean_list>

->anyURI类型

<url_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="uri.xsd">
</url_list>

->二进制

<binaryList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="binary.xsd">
</binaryList>

(2)使用限制派生新类型

方式一(base.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:simpleType name="age_Type">
<xs:restriction base="xs:int">
<xs:maxInclusive value="100"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="age" type="age_Type"/>
</xs:schema>

方式二

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:simpleType name="price_Type">
<xs:restriction>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
<xs:totalDigits value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:maxInclusive value="100"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="price" type="price_Type"/>
</xs:schema>

(base.xml)

<?xml version="1.0" encoding="UTF-8"?>
<age xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="base.xsd">
34
</age>

(3)指定类型的两种方式

->指定type类型

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="books" type="xs:string"/>
<xs:element name="开始日期" type="xs:date"/>
<xs:attribute name="price" type="xs:double"/>
<xs:attribute name="islast" type="xs:boolean"/>
</xs:schema>

->使用子元素

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="books">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="疯狂Java讲义"/>
<xs:enumeration value="轻量级Java EE企业应用实战"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>

(4)长度约束

<xs:length value="5" />
<xs:maxLength value="20" />
<xs:minLength value="0" />

(5)精度约束

<xs:simpleType name="price_Type">
<xs:restriction base="xs:decimal">
<!-- 最多5位数,小数点后最多2位数 -->
<xs:fractionDigits value="2"/>
<xs:totalDigits value="5"/>
<!-- 最大值500 -->
<xs:maxInclusive value="500"/>
</xs:restriction>
</xs:simpleType>

(6)枚举约束

<xs:simpleType name="地址_Type">
<xs:restriction base="xs:token">
<!-- 列出多个有效的枚举值 -->
<xs:enumeration value="广州"/>
<xs:enumeration value="上海"/>
</xs:restriction>
</xs:simpleType>

(7)正则表达式

<xs:simpleType name="price_Type">
<xs:restriction base="xs:decimal">
<!-- 必须匹配1XX.X的格式 -->
<xs:pattern value="1\d{2}\.\d"/>
</xs:restriction>
</xs:simpleType>

(8)空白处理

<!--whiteSpace可以接受的值
presver:保留值里边的空白
replace:将值里出现的所有的空白都替换成空格
collpase:先执行replace,在去掉前后的空格,并将中间的多个连续的空格压缩成一个
-->
<xs:simpleType name="price_Type">
<xs:restriction base="xs:decimal">
<!-- 下面的whiteSpace约束的值只能是collapse -->
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
<!-- 定义price元素,其类型是price_Type -->
<xs:element name="price" type="price_Type"/>
<xs:element name="简要介绍">
<xs:simpleType>
<xs:restriction base="xs:string">
<!-- 为string类型增加collapse约束,相当于token -->
<xs:whiteSpace value="collapse"/>
<!-- 指定字符串长度只能为5 -->
<xs:length value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

(9)使用list派生列表类型

<xs:simpleType name="age_list_Type">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minExclusive value="0"/>
<xs:maxExclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<!-- 定义age_list_Type类型的元素 -->
<xs:element name="age_list" type="age_list_Type"/>

(10)限制列表约束

---长度约束:Length。maxLength。minLength

---枚举约束:enumeration

---正则表达式约束:pattern

---空白处理:whiteSpace(约束值只能是collapse)

(11)使用union派生联合类型

<xs:simpleType name="price_Type">
<xs:restriction base="xs:decimal">
<xs:maxExclusive value="100"/>
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="publish_date_Type">
<xs:restriction base="xs:date">
<xs:minExclusive value="2007-01-01"/>
<xs:maxExclusive value="2009-12-31"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="price_publish_Type">
<!--此时price_name的值可以是price_Type也可以是publish_date_Type-->
<xs:union memberTypes="price_Type publish_date_Type"/>
</xs:simpleType>
<xs:element name="price_name" type="price_publish_Type"/>

(12)阻止派生新的简单类型

--->使用final属性

--->为约束指定fixed属性

(13)合并多个Schema

---->使用include元素

---->使用redefine元素

---->使用import元素

xml学习总结(二)的更多相关文章

  1. XML学习总结(二)——XML入门

    XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...

  2. xml学习笔记二(规则)

    XML 的语法规则很简单,且很有逻辑.这些规则很容易学习,也很容易使用. 所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a para ...

  3. XML学习总结二——DTD

    主要用处是约束XML. 1.DTD分为内部DTD与外部DTD两类: 内部DTD:将DTD定义在XML文档的内部 <!DOCTYPE  根元素名  [    元素描述]> 外部DTD < ...

  4. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  5. Android Animation学习(二) ApiDemos解析:基本Animators使用

    Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...

  6. XML 学习介绍 收藏

    XML学习总结(一)——XML介绍 一.XML概念 Extensible Markup Language,翻译过来为可扩展标记语言.Xml技术是w3c组织发布的,目前推荐遵循的是W3C组织于2000发 ...

  7. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  8. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  9. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

随机推荐

  1. cocos2d-x lua 触摸事件

    cocos2d-x lua 触摸事件 version: cocos2d-x 3.6 1.监听 function GameLayer:onEnter() local eventDispatcher = ...

  2. UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)

    栈的练习,如此水题竟然做了两个小时... 题意:给出矩阵大小和矩阵的运算顺序,判断能否相乘并求运算量. 我的算法很简单:比如(((((DE)F)G)H)I),遇到 (就cnt累计加一,字母入栈,遇到) ...

  3. js实现归并排序

    function merge(s_arr, d_arr, start, middle, end){ var s_temp = start; var m_temp = middle+1; var tem ...

  4. hdu 2838 树状数组

    思路:从后面往前面插,用一个二维树状数组保存,c[i][0]表示比i小的元素和,c[i][1]表示比i小的元素个数. #include<iostream> #include<cstr ...

  5. Nginx+FastCGI+C

    http://flandycheng.blog.51cto.com/855176/858946 http://www.cnblogs.com/xiaouisme/archive/2012/08/01/ ...

  6. 织梦dedecms源码安装方法

    织梦dedecms源码安装方法 第一步: 上传所有文件到空间 注意:(由于有很多人反应安装后首页样式都乱的,所以强烈要求安装到根目录,如:127.0.0.1 / www.xxx.com,或者二级域名也 ...

  7. java之enum枚举(2015年05月28日)

    背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定 ...

  8. C#中显/隐式实现接口及其访问方法

    原贴地址: http://www.cnblogs.com/dudu837/archive/2009/12/07/1618663.html 在实现接口的时候,VS提供了两个菜单,一个是"实现接 ...

  9. Unity3d导入工程出现错误“Creating unique file”的解决方法

    Unity3d导入工程出现错误“Creating unique file:creating file Temp/tempFile failed.Please ensure there is enoug ...

  10. sql常识-INNER JOIN

    SQL INNER JOIN 关键字 在表中存在至少一个匹配时,INNER JOIN 关键字返回行. INNER JOIN 关键字语法 SELECT column_name(s) FROM table ...