XMLSchema概述

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

xml Schema概述

一.元素和属性的声明

例:

<?xml version=”1.0” endcoding=”UTF-8”?>

<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema>

<xs:elementname=”student” type=”xs:string”/>

<xs:attributename=”sn” type=”xs:integer”/>

</xs:schema>

.元素和属性的类型:

xml schema中,元素和属性都有数据类型,元素的数据类型即元素内容的数据类型,属性的数据类型即属性值的数据类型。xml schema把元素和属性的概念与其数据类型分开,这就允许不同名称的元素拥有相同类型的数据。如下:

<xs:element name=”homeAddress” type=”addressType”/>

<xs:element name=”homeAddress” type=”addressType”/>

<xs:complexType name=”addressType”>

<xs:sequence>

<xs:element name=”street” type=”xs:string”/>

<xs:element name=”city” type=”xs:string”/>

<xs:element name=”country” type=”xs:string”/>

</xs:sequnence>

</xs:complexType>






三.简单数据类型

具有简单类型的元素只能包含字符数据,不能包含子元素,也不能有属性

XML Schema支持类型的派生,类型的派生分为:限制和扩展。通过限制派生的新类型的值的范围是原类型值范围的子集,通过扩展则可以为现有类型添加新的元素属性

XML Schema提高了12用于指定一个值的有效范围,约束值的长度和精度、枚举一系列的有效值,或者指定有效值必须匹配的正则表达式。(就是对数据类型的约束,目的是为了让他的值限制在一定的范围内)。

要定义新的简单类型,使用xs:simpleType元素,要对现有的基类型进行限制,使用xs:restriction元素,并在该元素的内部使用限制值范围的面。例如:

<xs:simpleType name=”ageType”>

<xs:restriction base=”xs:integer”>

<xs:minInclusive value=”18”/>

<xs:maxInclusive value=”60”/>

xs:restriction 元素的 base 属性指定要限制的基类型。

关于简单类型更详细的内容,参照以后的文章

四.复杂类型

具有复杂类型的元素可以有子元素和属性。复杂类型使用xs:complexType元素来定义。

复杂类型要么具有简单内容,要么具有复杂内容。元素的“内容”是指它的开始标签和结束标签之间的字符数据和子元素。简单内容指只包含字符数据内容,而不包含子元素(可以有属性),简单内容使用xs:simpleContent元素来定义;除此之外的元素为复杂内容,复杂内容使用xs:complexContent元素来定义。

五.全局声明和局部声明:

直接在xs:schema元素下生命的元素和属性是全局的,这些元素和属性可以通过xs:elementxs:attribute元素的ref属性来引用。例如:

<?xml version=”1.0” encoding=”UTF-8”?>

<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>

<xs:element name=”book” type=”bookType”/>

<xs:element name=”title” type=”xs:token”/>

<xs:element name=”author” type=”xs:token”/>

<xs:attribute name=”isbn” type=”xs:token”/>

<xs:complexType name=”bookType”>

<xs:sequence>

<xs:element ref=”title”/>

<xs:element ref=”author”/>

</xs:sequence>

<xs:attributename=”isbn” type=”xs:string”/>

</xs:complexType>

</xs:schema>

注:( 1 )全局声明的元素和属性名称在模式中必须唯一;

2)在全局生命中不能使用ref属性

3)全局声明的元素在实力文档中可以作为根元素出现。

六.模式与名称空间:

XML Schema名称空间提供了良好地支持

1.目标名称空间:

目标名称空间使用xs:schema元素的targetNamespace属性来制定。

例如:

<?xml version=”1.0” encoding=”UTF-8”?>

<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema

targetNamespace=”http://www.sunxin.org/book

xmlns:book=”http//www.sunxin.org/book”>

<xs:element name=”book” type=”book:bookType”/>

<xs:sequence>

<xs:element name=”title” type=”xs:token”/>

<xs:element name=”author” type=”xs:token”/>

</xs:sequence>

<xs:attribute name=”isbn” type=”xs:string”/>

</xs:complexType>

</xs:schema>

对应的实例文档:

<?xml version=”1.0” encoding=”GB2312”?>

<book:bookxmlns:book=”http://www.sunxin.org/book”isbn=”978-7-9”>

<title>struts 2深入详解》</title>

<author>孙鑫</author>

</book:book>



只有模式文档中的全局元素和全局属性才属于目标名称空间

为了简化模式文档可使用默认的名称空间,如下:

<?xml version=”1.0” encoding=”UTF-8”?>

<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema

targetNamespace=”http://www.sunxin.org/book

xmlns=”http//www.sunxin.org/book”>

<xs:element name=”book” type=”bookType”/>

<xs:sequence>

<xs:element name=”title” type=”xs:token”/>

<xs:element name=”author” type=”xs:token”/>

</xs:sequence>

<xs:attribute/>

</xs:complexType>

</xs:schema>


2.局部元素和属性的限定:

若想要限制局部的元素可在xs:schema标签最后使用elementFormDefault=”qualified”;若想限制属性,则可使用attributeDefault=”qualified”,即可把模式文档中的全部局部元素和属性添加名称空间,而若想给某个元素或属性添加,即可使用form属性,具体可在相应标签最后加上form=”qualified”

3.未声明的目标名称空间:

即不使用目标名称空间的文档。

七.在实例中引用模式文档:

XML Schema提供了两个在市里文档中使用的特殊属性,用于指出模式文档的位置。这两个属性是:xsi:schemaLocationxsi:noNamespaceLocation.前者用于声明了目标名称空间的模式文档,后者用于没有目标名称空间的模式文档,他们通常在市里文档中使用。

1.xsi:schemaLocation属性

例如:

<?xml version=”1.0” encoding=”GB2312”?>

<book xmlns=”http://www.sunxin.org/book”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://www.sunxin.org/book http:// http://www.sunxin.org/book.xsd”>

<title>struts 2深入详解》</title>

<author>孙鑫</author>

</book>

XML Schema推荐标准中指出,xsi:schemaLocationxsi:noNamespaceLocation可以在实例中的任何元素上使用,而不一定是根元素,不过他们必须出现在它要验证的人和元素和属性之前。另外这两个属性并不是必须的。

2.xsi:noNamespaceLocation属性的值是单一的值,只适用于指定模式文档的位置。

例如:

<?xml version=”1.0” encoding=”GB2312”?>

<book xmlns=”http://www.sunxin.org/book”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=” http:// http://www.sunxin.org/book.xsd”>

<title>struts 2深入详解》</title>

<author>孙鑫</author>

</book>


八.注释:

XML Schema中提供了三种元素来为模式提供注解,这三个元素分别为:xs:annotationxs:documentationxs:appinfo,其中xs:documentationxs:appinfoxs:annotation的子元素,

xs:documentation元素用于放置适合人阅读的信息,而xs:appinfo元素用于为工具,样式表与其他应用程序提供信息。另外对于xs:documentation具有xml:lang属性,而xs:appinfo没有。

猜你在找的XML相关文章