XML Schema概述

xml Schema概述

一.元素和属性的声明

例:

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

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

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

<xs:attribute name=”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:attribute  name=”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:book xmlns: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没有。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值