• XML Schema 定义


    <续 XML>

    XSDLXML Schema定义语言由元素、属性、命名空间和XML文档种的其他节点构成的。

    一、XSD中的元素

     

    XSD文档至少要包含:schema根元素和XML模式命名空间的定义、元素定义。

     

    1schema根元素

     

    语法如下:

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

    </xsd:schema>

    XSD中必须定义一个且只能定义一个schema根元素。根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些属性。

    2、元素

     

    语法如下:

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

    XSD中的元素是利用element标识符来声明的。其中name属性是元素的名字,type属性是元素值的类型,在这里可以是XML Schema中内置的数据类型或其他类型。

    例子:

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

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

    </xsd:schema>

    以上文档对应的有效XML文档如下:

    <?xml version=”1.0”?>

    <user>string</user>

    在元素的定义中还有2个属性:minOccursmaxOccurs。其中minOccurs定义了该元素在父元素中出现的最少次数(默认为1,值为大于等于0的整数),maxOccurs定义了该元素在父元素中出现的最多次数(默认为1,值为大于等于0的整数)。在maxOccurs中可以把值设置为unbounded,表示对元素出现的最多次数没有限制。

    例子:

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

        <xsd:element name=”user” type=”xsd:string” minOccurs=”0” maxOccurs=”unbounded” />

    </xsd:schema>

    表示为元素user的类型为string,出现的次数最少为0(也就是可选),最多不限制。

    3、引用元素和替代

     

    语法如下:

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

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

        <xsd:element name=”name”>

            <xsd:complexType>

                <xsd:sequence>

                    <xsd:element ref=”user” />

                </xsd:sequence>

            </xsd:complexType>

        </xsd:element>

    </xsd:schema>

    引用是利用element标记符的ref属性实现的。主要适用于避免在文档中多次定义同一个元素,应当将经常使用的元素定义为根元素的子元素,以便在文档的任何地方引用它。

    在这里还可以为某个定义的元素起一个别名(偶的理解^o^),方法如下:

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

        <xsd:element name=”yonghu” type=”xsd:string” substitutionGroup=”user” />

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

        <xsd:element name=”name”>

            <xsd:complexType>

                <xsd:sequence>

                    <xsd:element ref=”user” />

                </xsd:sequence>

            </xsd:complexType>

        </xsd:element>

    </xsd:schema>

    以上文档对应的有效XML文档如下:

    <?xml version=”1.0”?>

    <name>

        <user>string</user>

    </name>

    或者:

    <?xml version=”1.0”?>

    <name>

        <yonghu>string</yonghu>

    </name>

    主要是利用element标识符中的属性substitutionGroup实现的。

    4、设置默认值和固定值

     

    语法如下:

    <xsd:element name=”city” type=”xsd:string” default=”xian” />

    <xsd:element name=”country” type=”xsd:string” fixed=”china” />

    通过default属性的设置,可以在XML文档中没有对city元素定义时赋予默认值。而使用fixed属性,可以给元素country设定一个固定的值china,并且不允许改变!

    5、利用组合器控制结构

     

    sequence组合器,定义了一列元素必须按照模式中指定的顺序显示(如果是可选的,也可以不显示)。语法如下:

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

        <xsd:element name=”name”>

            <xsd:complexType>

                <xsd:sequence>

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

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

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

               </xsd:sequence>

            </xsd:complexType>

        </xsd:element>

    </xsd:schema>

    all组合器,允许所定义的元素可以按照任意顺序显示,all元素的子元素在默认情况下是必须的,而且每次最多显示一次。语法如下:

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

        <xsd:element name=”name”>

            <xsd:complexType>

                <xsd:all minOccurs=”0”>

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

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

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

                </xsd:all>

            </xsd:complexType>

        </xsd:element>

    </xsd:schema>

    choice组合器,允许指定多组声明中的一个,用于互斥情况。语法如下:

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

        <xsd:element name=”name”>

            <xsd:complexType>

                <xsd:choice>

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

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

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

                </xsd:choice>

            </xsd:complexType>

        </xsd:element>

    </xsd:schema>

    二、定义属性

     

    XML Schema文档中可以按照定义元素的方法定义属性,但受限制的程度较高。它们只能是简单类型,只能包含文本,且没有子属性。可以应用在attribute元素定义中的属性如下:

    default    初始默认值

    fixed      不能修改和覆盖的属性固定值

    name     属性的名称

    ref         对前一个属性定义的引用

    type      该属性的XSD类型或者简单类型

    use        如何使用属性

    form      确定attributeFormDefault的本地值

    id          模式文档中属性唯一的ID

     

    Defaultfixednamereftype属性与在element标记中定义的对应属性相同,但type只能是简单类型。Use属性的值可以是:optional(属性不是必须的,此为默认属性)、prohibited或者required(属性是强制的)。

     

    1、创建属性

     

    语法如下:

    <xsd:attribute name=”age” type=”xsd:integer” />

    该语句定义了一个名为age的属性,它的值必须是一个整数。把它添加到模式中时,它必须时schema元素、complexType元素或者attributeGroup元素的子元素。

    例子:

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

        <xsd:element name=”name”>

            <xsd:complexType>

                <xsd:sequence>

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

                </xsd:sequence>

                <xsd:attribute name=”age” type=”xsd:integer” use=”optional” />

            </xsd:complexType>

        </xsd:element>

    </xsd:schema>

    以上文档对应有效的XML文档如下:

    <?xml version=”1.0”?>

    <name age=”27”>

        <first>string</first>

    </name>

    如上所示,要把属性附加在元素上,属性应该在complexType定义中的组合器之后定义或引用。

  • 相关阅读:
    php一些实用的自制方法
    php商城数据库的设计 之无限分类
    thinkphp的where 之 or的使用
    thinkphp 接收文件并处理
    thinkphp验证器
    Html中文字过多,单行超出和多行超出显示省略号
    THINKPHP 模板上传图片--后台接收图片
    UIStackView,真正的自动布局
    iOS 为什么有的APP,没有在Devices显示出来?
    访问iOS APP的8080端口服务
  • 原文地址:https://www.cnblogs.com/tomin/p/1427742.html
Copyright © 2020-2023  润新知