XMLSchema概述

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

xml Schema概述@H_403_3@

一.元素和属性的声明@H_403_3@

例:@H_403_3@

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

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

<@H_502_23@xs:elementname=”student” type=”@H_502_23@xs:string”/>@H_403_3@

<@H_502_23@xs:attributename=”sn” type=”@H_502_23@xs:integer”/>@H_403_3@

</xs:schema>@H_403_3@

二@H_403_3@.@H_403_3@元素和属性的类型:@H_403_3@

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

@H_403_51@

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

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

@H_403_3@

<xs:complexType name=”addressType”>@H_403_3@

<xs:sequence>@H_403_3@

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

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

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

</xs:sequnence>@H_403_3@

</xs:complexType>@H_403_3@


@H_403_3@


@H_403_3@

@H_403_3@

@H_403_3@ @H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@

@H_403_51@@H_403_3@


@H_403_3@


@H_403_3@


@H_403_3@

三.简单数据类型@H_403_3@

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

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

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

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

<xs:simpleType name=”ageType”>@H_403_3@

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

<xs:minInclusive value=”18”/>@H_403_3@

<xs:maxInclusive value=”60”/>@H_403_3@

@H_403_3@

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

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

四.复杂类型@H_403_3@

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

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

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

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

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

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

@H_403_3@

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

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

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

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

@H_403_3@

<xs:complexType name=”bookType”>@H_403_3@

<xs:sequence>@H_403_3@

<xs:element ref=”title”/>@H_403_3@

<xs:element ref=”author”/>@H_403_3@

</xs:sequence>@H_403_3@

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

</xs:complexType>@H_403_3@

</xs:schema>@H_403_3@

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

@H_403_3@(@H_403_3@2@H_403_3@)在全局生命中不能使用@H_403_3@ref@H_403_3@属性;@H_403_3@

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

@H_403_3@

六.模式与名称空间:@H_403_3@

@H_403_51@XML Schema@H_403_3@名称空间提供了良好地支持。@H_403_3@

1.@H_403_3@@H_403_3@目标名称空间:@H_403_3@

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

例如:@H_403_3@

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

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

@H_502_23@targetNamespace=”http://www.sunxin.org/book”@H_403_3@

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

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

<xs:sequence>@H_403_3@

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

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

@H_502_23@@H_403_3@</xs:sequence>@H_403_3@

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

</xs:complexType>@H_403_3@

</xs:schema>@H_403_3@

@H_403_3@

@H_403_3@@H_403_3@
对应的实例文档:@H_403_3@ @H_403_3@

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

<@H_502_23@book:book@H_502_23@xmlns:book=”http://www.sunxin.org/book”isbn=”978-7-9”>@H_403_3@

<title>@H_403_3@《@H_403_3@struts 2@H_403_3@深入详解》@H_403_3@</title>@H_403_3@

<author>@H_403_3@孙鑫@H_403_3@</author>@H_403_3@

</book:book>@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@


@H_403_3@


@H_403_3@

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

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

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

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

@H_502_23@targetNamespace=”http://www.sunxin.org/book”@H_403_3@

@H_502_23@xmlns=”http//www.sunxin.org/book”>@H_403_3@

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

<xs:sequence>@H_403_3@

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

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

@H_502_23@@H_403_3@</xs:sequence>@H_403_3@

<xs:attribute/>@H_403_3@

</xs:complexType>@H_403_3@

</xs:schema>@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@

@H_403_3@


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

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

@H_403_3@

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

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

@H_403_3@

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

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

1.@H_403_3@@H_403_3@xsi:schemaLocation@H_403_3@属性:@H_403_3@

例如:@H_403_3@

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

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

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

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

<title>@H_403_3@《@H_403_3@struts 2@H_403_3@深入详解》@H_403_3@</title>@H_403_3@

<author>@H_403_3@孙鑫@H_403_3@</author>@H_403_3@

</book>@H_403_3@

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

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

例如:@H_403_3@

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

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

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

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

<title>@H_403_3@《@H_403_3@struts 2@H_403_3@深入详解》@H_403_3@</title>@H_403_3@

<author>@H_403_3@孙鑫@H_403_3@</author>@H_403_3@

</book>@H_403_3@


八.注释:@H_403_3@

@H_403_51@XML Schema@H_403_3@中提供了三种元素来为模式提供注解,这三个元素分别为:@H_403_3@xs:annotation@H_403_3@、@H_403_3@xs:documentation@H_403_3@和@H_403_3@xs:appinfo,@H_403_3@其中@H_403_3@xs:documentation@H_403_3@和@H_403_3@xs:appinfo@H_403_3@是@H_403_3@xs:annotation@H_403_3@的子元素,@H_403_3@

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

猜你在找的XML相关文章