XML语言基础3--Schema

时间:2022-08-29 18:00:27

1.什么是Schema

XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。

XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。

2.为什么需要Schema

弥补DTD的局限性

Schema的新特性

一致性:XML Schema 基于XML基本语法规则定义其文档结构;继承了XML的自描述性和可扩展性。

完备性:引入了数据类型(并可自定义数据类型)、命名空间,支持对其他 XML Schema 的引用,具备较强的模块性;

规范性和准确性:XML Schema提供了更加规范和完备的机制来约束XML文档。

面向对象特征:XML Schema中引入了许多成熟的面向对象机制(比如继承性和多态性)。

扩展性:XML Schema 提供了一些扩展机制,允许在事先无法准确描述数据模式的情况下,在XML实例数据中根据需要添加相关的数据。

3.Schema的文档结构

XML Schema 文件的后缀名通常为 .xsd

XML Schema 文件是一个特殊的 XML 文件

▪所有Schema文档使用schema作为其根元素
▪用于构造Schema的元素和数据类型来自命名空间http://www.w3.org/2001/XMLSchema,前缀一般使用 xs 或 xsd
示例(保存为Student.xsd):
 <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="student" type="Student"/>
<xs:complexType name="Student">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="gender" type="Gender"/>
<xs:element name="no" type="xs:string"/>
<xs:element name="teliphone" type="Telenum"/>
<xs:element name="age" type="xs:nonNegativeInteger"/>
<xs:element name="gpa" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="Gender">
<xs:restriction base="xs:string">
<xs:enumeration value="Female"/>
<xs:enumeration value="Male"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Telenum">
<xs:restriction base="xs:string">
<xs:pattern value="(\d{4}-\d{8})|(\d{3}-\d{8})|(\d{4}-\d{7})"/>
</xs:restriction> </xs:simpleType>
</xs:schema>

与Schema建立关联的XML文档:

 <?xml version="1.0" encoding="UTF-8"?>
<student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Student.xsd">
<name>XiaoMing</name>
<gender>Male</gender>
<no>123</no>
<teliphone>011-12345678</teliphone>
<age>20</age>
</student>

4.Schema的数据结构

XML Schema 中的数据类型主要是针对XML元素而言的。

简单类型:不包含任何子元素和属性的元素,只能包含文本内容或是不包含文本的空元素

--内置数据类型

基本数据类型 Primitive Datatype

派生数据类型 Drived Datatype

--用户自定义的数据类型(通过simpleType定义)

复杂类型:包含子元素和/或属性的元素,也可包含文本内容(通过complexType定义)。

4.1 XML Schema 中用户自定义的简单数据类型

a) 通过限制(restriction)派生简单数据类型

b)

通过限制(restriction)派生简单数据类型

c) 通过合并派生简单数据类型

4.2 复杂数据类型

复杂数据类型的几种情况

① 空元素(只包含属性、不包含子元素和文本内容)

−对于包含属性的空元素,只需定义所需的属性及其数据类型。

② 只包含子元素,不包含文本内容(可能包含属性)

子元素的声明必须放在某个容器中,而不能直接出现在 xs:complexType 元素中,即使是只有一个子元素。

如果有属性,属性声明必须放在所有子元素声明之后。

▪xs:sequence  表示序列,元素必须按照声明的顺序出现。
▪xs:choice   表示从所包含的内容中选择其一。
▪xs:all 表示其中所包含的内容不分先后顺序。

③ 只包含文本内容和属性,不包含子元素

对于这种类型的元素,只包含简单内容(文本和属性),声明时,XML Schema中引入了一个新的元素simpleContent(用于表示“文本”、或者“文本+属性”)。

④ 同时包含子元素和文本(可能包含属性)

定义这种复杂数据类型,要使用complexType的mixed属性。

如果有属性,属性声明必须放在所有子元素声明之后。

 

XML语言基础3--Schema的更多相关文章

  1. XML语言基础1

    这学期选修了XML技术这门课,没有发课本,于是参考了W3school教程,整理一下上课的内容. 1.XML简介 XML是一种标记语言,很类似HTML,它不是对HTML的替代,而是对HTML的补充.在大 ...

  2. XML语言基础2 DTD

    XML DTD 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档结构. DTD可被声明于XML文档中,也可以作为一个外部的引用. 内部的DOCTYPE声明 假如D ...

  3. xml之基础了解

    1.简介 1>什么XML语言(eXtensible Markup Language) 可扩展标记语言XML是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务.接受和 ...

  4. 2008技术内幕:T-SQL语言基础

    2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...

  5. 2008技术内幕:T-SQL语言基础 单表查询摘记

    这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLFundamentals2008 ,官网给出的连接是这 ...

  6. T-SQL语言基础(转载)

    本文转自http://www.cnblogs.com/Jolinson/p/3552786.html 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基 ...

  7. 《MSSQL2008技术内幕&colon;T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

  8. C&num;语言基础

    第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...

  9. php面试题之三——PHP语言基础(基础部分)

    三.PHP语言基础 1. strlen( )与 mb_strlen( )的作用分别是什么(新浪网技术部) strlen和mb_strlen都是用于获取字符串长度. strlen只针对单字节编码字符,也 ...

随机推荐

  1. URI编码解码和base64

    概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...

  2. nyoj 708 ones 动态规划

    http://acm.nyist.net/JudgeOnline/problem.php?pid=708 状态转移方程的思路:对于一个数N,可以是N - 1的状态+1 得到,另外,也可以是(n / 2 ...

  3. 见证历史 -- 2013 NBA 热火夺冠之路有感

    见证历史-- 2013 NBA 热火夺冠之路有感今年NBA季后赛从第一轮看起,到最终的热火夺冠,应该看得是最爽的一次.但一些情节和细节,回忆起来,深有感悟. 1. 做人要低调詹宁斯豪言演黑八雄鹿本赛季 ...

  4. JAVA的面向对象编程--------课堂笔记

    面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么 ...

  5. SAE Java开发问题汇总

    转自:http://binary.duapp.com/2012/10/275.html 1.sae上传了war后不报错,却出现一片空白: 原因:上传war包不能包含servlet-api和xmlsec ...

  6. &lbrack;LeetCode&rsqb; Container With Most Water 简要分析

    前言 这题非要说贪心的话也算是吧,不过最主要的特征还是双指针.LC的题好像不少都是扔倆头尾指针然后遍历一遍完事儿的.这道题倒是“短板效应”的不错体现了. 题目 题目链接 Given n non-neg ...

  7. 李洪强iOS开发之图片拉伸技巧

    纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能.极强的用户体验.华丽简洁的外观.华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设 ...

  8. tcpreplay安装使用经验

    tcpreplay安装使用经验   #Author: ypguo#Data: 2010.4.23#Version:  1.2 增加了修改VLAN tag内容.                 1.1 ...

  9. WebApi2官网学习记录---BSON

    BSON 是轻量级的,能够进行快速查询和高效的解码/编码.BSON方便查询是由于elements的前面都有一个表示长度的字段,所以解释器可以快速跳过这个elements:高效的解码/编码是因为nume ...

  10. Java并发之AQS详解

    一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQ ...