XML Schema

来源:互联网 发布:js有设计模式吗 编辑:程序博客网 时间:2024/05/11 10:46

 Xml是一种元标记语言,用户可以根据自己的需要来定义标记,在标记的意义上可以具有相当大的灵活性。标记的定义可以再文档定义类型(Document Type Definition,DTD)中加以描述,xml把DTD看成是一本词汇表和某类文档的句法。

 

但是DTD语法相当复杂,不符合xml文件的标准,自成一个体系,xml schema和DTD一样是负责定义和描述xml文档的结构和内容模式的,但是,它可以定义xml文档中存在哪些元素以及元素之间的关系,并且可以定义元素和属性的数据类型,xml schema本身是一个xml文档,符合xml的语法结构,可以用通用的xml解析器来解析。

 

一个简单的Schema文档:Schema文档的根元素必须为<Schema>

<?xml version = “1.0”>

<Schema>

       <ElementType name = “title” content = “textOnly” model = “closed”></ ElementType >

</Schema>

 

Xml Schema的语法结构:

ElementType是Schema中最基本的元素,它用来定义XML文件中元素的格式,数据类型等。其基本格式为:

<ElementType

       Content = “{empty | textOnly | eltOnly | mixed}”

       dt:type = “datatype”

       model = “{open | closed}”

       name = “idref”

       order = “{one | seq | many}”>

</ElementType>

Content是描述元素中的内容的类型,emtpy空,textOnly元素只包含文本类型的内容,eltOnly只包含元素类型的内容,即元素嵌套。mixed混合。

Model表明是否要严格遵守Schema中的定义,open表明可以添加未专门定义过的元素,文本等。Closed只允许添加定义过的。

Name定义元素的名称,order定义元素的子元素的排列顺序,one一种方式,seq按指定的方式,many可以按照任何方式。

 

在一个模式文档中,当需要定义新的复杂的类型时候,应当使用complexType元素来定义。举个例子就可以明白了:USAddress是一个复杂类型,包含了两个元素和一个属性,则Schema的声明可以是:

<xsd:complexType name = “USAddress”>

       <xsd:sequence>

              <xsd:element name = “name” type = “xsd:string”/>

<xsd:element name = “street” type = “xsd:string”/>

       </xsd:sequence>

       <xsd:attribute name = “country” type = “xsd:string” fixed = “US”/>

<xsd:complexType>

      

AttributeType也是xml的元素之一,可以表示Element中的某些特征,基本格式为:

<AttributeType

       default = “default-value”

       dt:type = “primitive-type”

       dt:value = “enumerated-values”

       name = “idref”

       required = “{yes | no}”

/>

default用来设定Attribute的默认值,requried定义该Attribute是否一定该包含在element中,也是表示包含,no表示不包含。

 

Description元素用于说明Schema定义的内容,group元素用于按一定顺序将元素组织起来,group的表现形式为:

<group maxOccurs = “{1 | *}”

         minOccurs = “{ 0 | 1}”

         order = “{one | seq | many}”/>      

maxOccurs最多能被调用的次数,minOccurs最少能被调用的次数

      

在XML中引用XML Schema:

<”elementname”XMLns = “x-Schema:[url]”>

例如:

<book XMLns = “x_Schema:http://www.microsoft.com/XML/Schema/bool.xml”>

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chshplp2008/archive/2009/10/29/4741774.aspx

原创粉丝点击