XML基础,Schema

1.XML概述

1.1 XML产生背景

随着Web应用的不断发展,HTML的局限性也越来越明显地显现了出来,如HTML无法描述数据、可读性差、搜索时间长等。人们又把目光转向SGML,再次改造SGML使之适应现在的网络需求。随着先辈的努力,1998年2月10日,W3C(World WideⅥiebConsortium,万维网联盟)公布XML 1.0标准,XML诞生了。

1.2 XML基本特征

(1)可扩展性:XML允许使用者自定义的标记来描述数据。
(2)自描述性:XML具有自描述性的特点,可以使用XML语言来定义特定的文档模式,以检验XML文档是否满足特定要求。XML不仅容易阅读,许多异构等计算系统也都支持对XML的处理。XML描述数据的方式真正做到了独立于应用系统,并且使得数据能够重用。
(3)简洁性:用SGML的20%的复杂性,保留了80%的功能。
(4)数据的描述与显示相分离:使用XML技术,需要显示的数据可以独立地存放在XML文档中,只要在HTML文件中调用XML数据文档即可。
(5)易于数据的交换与共享:随着网络的不断发展,异构性问题日益突出。成异构系统之间的数据交换也是开发者极为关注的事。利用XML跨平台的特性,将待交换的数据存储在XML文档中,能够方便地实现异构系统之间数据交互。此外,将待共享的数据存储在XML文档中,可以让更多的网络系统轻松获得资源的共享。这样升级服务器、操作系统、浏览器和应用程序就更加容易。
(6)易于充分利用数据:因为XML具有跨平台且易于数据交换和共享的特点,数据可以被更多的用户和设备所利用。这些应用程序或设备可以把XML文档数据作为数据的来源,应用程序和设备可以“阅读”XML文档一样处理,使得数据得到充分利用。
(7)可用于创造新的语言:使用XML可以创造符合某一特定领域的数据描述标签,以满足特定领域数据描述的需要。例如MML(音乐领域XML)、ebXML(电子商务领域XML)、CML(化学领域XML)。XML在Web Services中的应用不容忽视,它是Web Services的基石。

1.3 XML定义

定义:XML为可扩展标记性语言。
作用:
  1、保存具有自我描述性的数据。
  2、为项目或模块配置文件。
  3、作为网络传输数据格式。

2.XML语法简介

2.1XML元素

一个xml标签就是一个元素。
一个标签分为开始标签和结束标签。
在开始标签和结束标签之间可以包含文本内容,这样的文本内容叫做标签体。
如果标签的开始标签和结束标签之间不包含标签和子标签,则可以将开始标签和结束标签进行合并,这样的标签就叫做自闭标签,如:<a/>。
一个标签中也可以包含任意多个子标签,但是一定要注意标签一定要合理嵌套。
一个格式良好的xml要包含并且只能包含一个根标签,其他的标签都应该是这个标签的子孙标签。
  元素命名规则:
  ① 区分大小写,例如,<P><p>是两个不同的标记。
  ②不能以数字或标点符号或"_"开头。
  ③不能以xml(或XML、或Xml 等)开头。
  ④不能包含空格。
  ⑤名称中间不能包含冒号(:)。

2.2 属性

一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:

属性的名在定义时要遵循和xml元素相同的命名规则。

属性的值需要用单引号或双引号括起来。

2.3 注释

注释可以出现在xml文档的任意位置除了整个文档的最前面,不能出现在文档声明之前。注释不能嵌套注释。

3.XML Schema

3.1 Schema的优势

1、支持数据类型
XML Schema 最重要的能力之一就是对数据类型的支持。通过对数据类型的支持:
◆ 可更容易地描述允许的文档内容
◆ 可更容易地验证数据的正确性
◆ 可更容易地与来自数据库的数据一并工作
◆ 可更容易地定义数据约束(data facets)
◆ 可更容易地定义数据模型(或称数据格式)
◆ 可更容易地在不同的数据类型间转换数据

2、它使用 XML 语法
另一个关于XML Schema 的重要特性是,它们由XML编写。由XML编写XML Schema有很多好处:
◆ 不必学习新的语言
◆ 可使用 XML 编辑器来编辑 Schema 文件
◆ 可使用 XML 解析器来解析 Schema 文件
◆ 可通过 XML DOM 来处理 Schema
◆ 可通过 XSLT 来转换 Schema

3、可保护数据通信
◆ 当数据从发送方被发送到接受方时,其要点是双方应有关于内容的相同的"期望值"。
◆ 通过 XML Schema,发送方可以用一种接受方能够明白的方式来描述数据。
一种数据,比如 “03-11-2004”,在某些国家被解释为11月3日,而在另一些国家为当作3月11日。
但是一个带有数据类型的 XML 元素,比如:2004-03-11,可确保对内容一致的理解,这是因为 XML 的数据类型 “date” 要求的格式是 “YYYY-MM-DD”。

4、可扩展性
XML Schema 是可扩展的,因为它们由 XML 编写。通过可扩展的 Schema 定义,您可以:
◆ 在其他 Schema 中重复使用您的 Schema
◆ 创建由标准类型衍生而来的您自己的数据类型
◆ 在相同的文档中引用多重的 Schema

5、可捕获到错误
◆ 即使文档的形式良好,仍然不能保证它们不会包含错误,并且这些错误可能会产生严重的后果。
请考虑下面的情况:您订购的了 5 打激光打印机,而不是 5 台。通过 XML Schema,大部分这样的错误会被您的验证软件捕获到。

3.2 Schema的缺点

◆ 虽然被写入XML是一个优势,在某些方面也是一个缺点。W3C XML Schema语言特别是可能非常冗长,而DTD可以简洁且相对容易编辑。
◆ W3C XML Schema没有实现大部分提供的数据元素到文档的DTD能力。

◆ IE不能验证XML是否符合Schema,需要通过专有的工具软件或者编程进行验证。

3.3 XML元素的声明

1.根元素

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="www.broadnew.com"
elementFormDefault="qualified"
attributeFormDefault="qualified">

2.元素

用于声明被校验XML文档的一个元素,主要属性有:

1)name:声明元素的名字;

2)type:声明元素的数据类型,可以使用Schema的数据类型,也可以使用自定义的数据类型。该类型要么是声明元素的属性,要么是声明元素标签之间的内容或者子元素。

3)ref:用于引用一个声明好的元素,如<xs:element ref=“cat”/>,cat是本文档中已经声明的一个元素,该语句表示这里需要填充一个cat元素,常用于声明自定义数据类型中使用。

4)minOccurs:该属性值为一个整数,表示该声明元素最少要出现的次数。

5)maxOccurs:该属性值为一个整数,表示该声明元素最多能出现的次数,如果值为unbounded,则表示无限制。

6)substitutionGroup:属性值是一个已经定义的元素名字,表示可以使用属性值对应的元素替换属性归属的元素,比较少使用。

3.4 Schema的数据类型

1.简单数据类型

(1)内置简单数据类型

schema中定义了一些简单数据类型,包括primitive原始数据类型和derived派生数据类型,这些类型都是schema中使用的

最基本的数据类型,我们可以用他们自定义简单数据类型

表:primitive原始数据类型

数据类型描述
string字符串
Boolean布尔值
decimal十进制数字
float32位浮点数
double64位浮点数
timeDuration标识持续时间
datetime特定时间
time
date
anyURI代表URI,用来定位文件
recurring Duration

派生数据类型

数据类型描述
integer
long[-263,263-1]
nonNegativeInteger大于等于零的整数
positiveInteger大于零的整数
int[-231,231-1]
times
date

(2)自定义简单数据类型

<xs:simpleType name="phoneno">
  <xs:restriction base="xs:string">
    <xs:length value="3" />
    <xs:pattern value="\d{4}-\d{3}" />
  </xs:restriction>
</xs:simpleType>

simpleType元素常用子元素

子元素作用
enumeration枚举类型,供用户选择
fractionDigits限定最大的小数位,用户控制精度
length自定数据的长度
maxExclusive指定数据的最大值(小于)
maxInclusive指定数据的最大值(小于等于)
maxLength指定长度的最大值
minExclusive指定最小值(大于)
minInclusive指定最小值(小于等于)
minLength指定最小长度
pattern正则

e.g.

<xs:simpleType name="gender">
  <xs:restriction base="xs:string">
    <xs:enumeration value=""/>
    <xs:enumeration vlaue=""/>
  </xs:restriction>
</xs:simpleType>

2.复合类型(通过complexType定义)

complexType 元素

作用:定义一个符合类型。它决定了一组元素和属性值的约束和相关信息

属性:name

常用两种方式:

sequence 给一组元素一个特定序列

choice 设置选择项

作用:把一组属性声明组合在一起,以便可以被复合类型应用

数据类型的特征
enumeration 在指定的数据集中选择,限于用户的选值
length 指定数据的长度
maxExclusive 指定数据的最大值(小于)
maxInclusive 指定数据的最大值(小于等于)
maxLength 指定长度的最大值
minExclusive 指定最小值(大于)
minInclusive 指定最小值(大于等于)
minLength 指定最小长度
<xs:complexType name="">

  <内容模板定义(包括子元素和属性的声明)

</xs:complexType>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LxRnrZWh-1671002932771)(XML基础,Schema.assets/ContractedBlock.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Amz4CUyu-1671002932772)(XML基础,Schema.assets/ExpandedBlockStart.gif)]

1 <xs:complexType name="address">
2   <xs:sequence>
3     <xs:element name="street" type="xs:string" />
4     <xs:element name="city" type="xs:string" />
5     <xs:element name="state" type="xs:string" />
6     <xs:element name="zip" type="xs:decimal" />
7   </xs:sequence>
8 </xs:complexType>
3.5 XML Schema 属性声明
<attribute name="属性名"
 		   default="缺省值" 
 		   fixed="固定值" 
 		   type="数据类型名"
 		   use="option|required" >

e.g.

<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema">
   <xs:element name="name">
     <xs:complexType>
       <xs:element name="first" type="xs:string" />
       <xs:attribute name="age" type="xs:integer" use="optional" />
     </xs:complexType>
   </xs:element>
 </xs:schema>

4.模式重用

元素

用来包含或引用一个明确地址的外部模式

语法结构:

<include id=”ID” schemaLocation=”filename”/>

语法解析:

Id用来指定元素的ID,ID必须是唯一的。该项可选。

schemaLocation指定模式文件的物理地址。

​ 例子:

<?xml version=”1.0” encoding=”UTF-8”?>
<xs:schema xmlns:xs=” http://www.cnblogs.com/ForEvErNoME/ XMLSchema”

                    targetNamespace=” http://www.cnblogs.com/ForEvErNoME/”

                    xmlns=” http://www.cnblogs.com”

                    <xs:include schemaLocation=” http://www.cnblogs.com/ForEvErNoME/1.xsd”/>

                    <xs:include schemaLocation=” http://www.cnblogs.com/ForEvErNoME/2.xsd”/>

<!—Schema文档中子元素的名字和类型的定义-->

</xs:schema>

(2) import元素

import和include有同样的功能,但是import允许访问来自多个不同目标名称空间的模式的组件。

语法结构:

<import id=”ID” namespace=”namespace” schemaLocation=”filename”/>

语法解析:

Id用来指定元素的ID,ID必须是唯一的。该项可选。

Namespace指定被引入模式所属的命名空间URI,它指定前缀。该前缀用来使一个元素或属性和一个特定的命名空间相关联。

ErNoME/2.xsd”/>

<!—Schema文档中子元素的名字和类型的定义–>

</xs:schema>




(2)    import元素

import和include有同样的功能,但是import允许访问来自多个不同目标名称空间的模式的组件。

语法结构:

```xml
<import id=”ID” namespace=”namespace” schemaLocation=”filename”/>

语法解析:

Id用来指定元素的ID,ID必须是唯一的。该项可选。

Namespace指定被引入模式所属的命名空间URI,它指定前缀。该前缀用来使一个元素或属性和一个特定的命名空间相关联。

schemaLocation指定模式文件的物理地址。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值