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. 小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞

    手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘 ...

  2. 给jdk写注释系列之jdk1.6容器(9)-Strategy设计模式之Comparable&Comparator接口

    前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口.      既然说到排序,首先我们不用去关心什 ...

  3. yii2.0的gii生成代码bug

    自动生成代码真的很好用,能减少很多基础代码的编写,如果这些基础代码一个个手动去敲,即枯燥乏味,还容易出错(话说人类真的不适合做单调重复的工作),yii框架的gii自动生成代码工具就能减少很多工作量.前 ...

  4. 关于JDK中正则表达式

    正则表达式的构造摘要 构造 匹配     字符 x 字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 <= n <= 7) \0nn 带有八进制值 0 的字符 nn ...

  5. Linux系统调用(转载)

    目录: 1. Linux系统调用原理 2. 系统调用的实现 3. Linux系统调用分类及列表 4.系统调用.用户编程接口(API).系统命令和内核函数的关系 5. Linux系统调用实例 6. Li ...

  6. 【分割圆】Uva 10213 - How Many Pieces of Land ?

    一个椭圆上有N个点,将这n个点两两相连,问最多能将这个椭圆分成多少片. 理清思路,慢慢推. 首先我们要想到欧拉公式:V+E-F=2 其中V为图上的顶点数,E为边数,F为平面数. 计算时的可以枚举点,从 ...

  7. 【基本计数方法---加法原理和乘法原理】UVa 11538 - Chess Queen

    题目链接 题意:给出m行n列的棋盘,当两皇后在同行同列或同对角线上时可以互相攻击,问共有多少种攻击方式. 分析:首先可以利用加法原理分情况讨论:①两皇后在同一行:②两皇后在同一列:③两皇后在同一对角线 ...

  8. Lombok(1.14.8) - @NoArgsConstructor, @RequiredArgsConstructor & @AllArgsConstructor

    @NoArgsConstructor @NoArgsConstructor,提供一个无参的构造方法. package com.huey.hello.bean; import java.util.Dat ...

  9. Git - Download for Linux and Unix

    It is easiest to install Git on Linux using the preferred package manager of your Linux distribution ...

  10. Unity3D鼠标点击物体产生事件

    如果需要处理鼠标点击物体的情况, 可以当数据接触物体时,鼠标手势改变,然后点击后和NPC产生对话等: using UnityEngine; using System.Collections; publ ...