XML之Schema验证

前端之家收集整理的这篇文章主要介绍了XML之Schema验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本片博文是从http://blog.csdn.net/csh624366188博客转载过来的。因为我现在也学XML,学习便Copy过来了。XMLSchema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。XMLSchema规定XML文档实例的结构和每个元素/属性的数据类型。

为什么要用Schema

DTD的局限性

1.DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)

2.DTD数据类型有限(与数据库数据类型不一致)

3.DTD不可扩展

4.DTD不支持命名空间(命名冲突)

.Schema的新特性

1.Schema基于XML语法

2.Schema可以用能处理XML文档的工具处理

3.Schema大大扩充了数据类型,可以自定义数据类型

4.Schema支持元素的继承—Object-Oriented

5.Schema支持属性

一:Schema基础知识

1.Schema(模式):其作用与dtd一样,也是用于验证XML文档的有效性,只不过它提供了比dtd更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个XML文件,而dtd则不是。

2.所有的schema文档,其根元素必须为schema。

3.Schema的文档结构

4.schema的数据类型

1.基本类型

2.扩展数据类型

3.数据类型的特性

二:schema的元素类型

1.schema元素:

作用:包含已经定义的schema

用法<xs:schema>

属性

–xmlns–targetNamespace

2.element元素作用:声明一个元素

属性:–name–type–ref–minOccurs–maxOccurs

–substitutionGroup–fixed–default

示例:

  1. <spanstyle="font-size:12px;">xs:elementname="cat"type="xs:string"/>
  2. xs:elementname="dog"type="xs:string"xs:elementname="pets">
  3. </span>


3.group元素

作用:把一组元素声明组合在一起,以便它们能够一起被复合类型应用

属性:name/ref

示例:

?
    xs:groupname="myGroupOfThings"xs:sequencexs:elementref="thing1"xs:elementref="thing2"xs:group>>


4.attribute元素

作用:声明一个属性

属性:name/type/ref/use

•示例:

?
    xs:complexTypename="myComplexType"xs:attributename="mybaseattribute"type="xs:string"use="required"xs:complexType>

5.attributeGroup元素

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

.属性name/ref

.示例:

?
    xs:attributeGroupname="myAttributeGroup"xs:attributename="someattribute1"type="xs:integer"xs:attributename="someattribute2"type="xs:string"xs:attributeGroup>


6.simpleType元素

作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息

.属性name

.内容:应用已经存在的简单类型,三种方式:

restrict→限定一个范围

list→从列表中选择

union→包含一个值的结合

1.子元素为:<xs:restriction>定义一个约束条件

2.子元素为:<xs:list>从一个特定数据类型的集合中选择定义一个简单类型元素

3.子元素为:<xs:union>从一个特定简单数据类型的集合中选择定义一个简单类型元素

示例:<xs:simpleTypename="roadbikesize">

?
    fontsize="2"fontsize="4"spanstyle="font-family:TimesNewRoman;"spanstyle="font-family:CourierNew;font-size:12px;"xs:schemaxs:simpleTypename="roadbikesize"fontxs:restrictionbase="xs:positiveInteger">
  1. xs:enumerationvalue="46"xs:enumerationvalue="52"xs:enumerationvalue="55"xs:restrictionxs:simpleTypexs:simpleTypename="mountainbikesize"xs:restrictionbase="xs:string"xs:enumerationvalue="small"xs:enumerationvalue="medium"xs:enumerationvalue="large">

7.complexTyep类型

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

属性:name

•示例:

?
    xs:complexTypename="internationalShoeSize"xs:simpleContentxs:extensionbase="xs:decimal"xs:attributename="sizing"type="xs:string"/>xs:extensionxs:elementname="myShoeSize"type="internationalShoeSize">

simpleType元素和complexTyep类型的区别(重要)

simpleType类型的元素中不能包含元素或者属性

•当需要声明一个元素的子元素和/或属性时,用complexType;

•当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。

8.simplecontent元素

作用:应用于complexType,对它的内容进行约束和扩展

9.choice元素

作用:允许唯一的一个元素从一个组中被选择

.属性minOccurs/maxOccurs

10.sequence元素

作用:给一组元素一个特定的序列

Schema总结:

Schema是另一种文档类型定义,它遵循XML的语言规范。

.Schema是可扩展的,支持命名空间;

.Schema支持更多的数据类型与元素类型;

.Schemaelement声明元素,用attribute声明元素的属性

.SchemasimpleType定义简单类型,用complexType定义复杂类型。

猜你在找的XML相关文章