• XML语言2.约束


    三、XML的约束

    目的:编写一个文件用来约束另一个xml文件的书写规范。

    1. DTD

      用来约束xml的文件格式,保证这个文件是有效的。

      内部DTD:所有的约束都是直接定义在xml文件中的

    内部的 DOCTYPE 声明的格式

        <!DOCTYPE 根元素 [元素声明]>

    声明一个元素:

        <!ELEMENT 元素名称 类别>或<!ELEMENT 元素名称 (元素内容)>

    类别:

    空元素     <!ELEMENT 元素名称 EMPTY>

    任意内容的元素 <!ELEMENT 元素名称 ANY>

    元素内容:

        只有 PCDATA 的元素            <!ELEMENT 元素名称 (#PCDATE)>

        带有子元素(序列)的元素    <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

        声明只出现一次的元素        <!ELEMENT 元素名称 (子元素名称)>

        声明最少出现一次的元素        <!ELEMENT 元素名称 (子元素名称+)>

        声明出现零次或多次的元素    <!ELEMENT 元素名称 (子元素名称*)>

        声明出现零次或一次的元素    <!ELEMENT 元素名称 (子元素名称?)

    声明一个属性:

        <!ATTLIST 元素名称 属性名称 属性类型 默认值>

    属性类型选项:

        

    类型        描述

    CDATA        值为字符数据 (character data)

    (en1|en2|..)    此值是枚举列表中的一个值

    ID            值为唯一的 id

    IDREF        值为另外一个元素的 id

    IDREFS        值为其他 id 的列表

    NMTOKEN    值为合法的 XML 名称

    NMTOKENS    值为合法的 XML 名称的列表

    ENTITY        值是一个实体

    ENTITIES        值是一个实体列表

    NOTATION    此值是符号的名称

    xml:            值是一个预定义的 XML 值

     

    默认值参数:

     

     

    值            解释

    值            属性的默认值

    #REQUIRED    属性值是必需的

    #IMPLIED    属性不是必需的

    #FIXED value    属性值是固定的

    外部文档声明:

        引用本地文件:

        <!DOCTYPE 根元素 SYSTEM "文件名">

        引用在线文件:

        <!DOCTYPE 根元素 PUBLIC "dtd名称" "文件地址" >

    2.Schema

    XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。

    <schema> 元素是每一个 XML Schema 的根元素。

    XSD简易元素

        定义简易元素:

    <xs:element name="xxx" type="yyy"/>

    此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。

    常用类型有:

        xs:string

    xs:decimal

    xs:integer

    xs:boolean

    xs:date

    xs:time

    例如:

    <xs:element name="lastname" type="xs:string"/>

    <xs:element name="age" type="xs:integer"/>

    <xs:element name="dateborn" type="xs:date"/>

    简易元素的默认值:

    <xs:element name="color" type="xs:string" default="red"/>

    简易元素的固定值:

    <xs:element name="color" type="xs:string" fixed="red"/>

    简易元素无法拥有属性。

    XSD属性:

        格式:

    <xs:attribute name="xxx" type="yyy"/>

    在此处,xxx 指属性名称,yyy 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。

    常用类型有:

        xs:string

    xs:decimal

    xs:integer

    xs:boolean

    xs:date

    xs:time

    例如:

    对应的属性定义

    <xs:element name="lastname" type="xs:string"/>

    <xs:attribute name="lang" type="xs:string"/>

    带有属性的xml元素:

    <lastname lang="en">Smith<lastname>

    属性的默认值:

    <xs:attribute name="lang" type="xs:string" default="EN"/>

    属性的固定值:

    <xs:attribute name="lang" type="xs:string" fixed="EN"/>

    可选和必需的属性:

    在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:

    <xs:attribute name="lang" type="xs:string" use="required"/>

    XSD限定/Facets:

        限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet

    对值的限定:

    下面的例子定义了带有一个限定且名为 "age" 的元素。age 的值不能低于 0 或者高于 120:

    <xs:element name="age">

     

    <xs:simpleType>

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

    <xs:minInclusive value="0"/>

    <xs:maxInclusive value="120"/>

    </xs:restriction>

    </xs:simpleType>

     

    </xs:element>

    数据类型的限定:

     

    限定    描述

    enumeration    定义可接受值的一个列表

    fractionDigits    定义所允许的最大的小数位数。必须大于等于0。

    length        定义所允许的字符或者列表项目的精确数目。必须大于或等于0。

    maxExclusive    定义数值的上限。所允许的值必须小于此值。

    maxInclusive    定义数值的上限。所允许的值必须小于或等于此值。

    maxLength    定义所允许的字符或者列表项目的最大数目。必须大于或等于0。

    minExclusive    定义数值的下限。所允许的值必需大于此值。

    minInclusive    定义数值的下限。所允许的值必需大于或等于此值。

    minLength    定义所允许的字符或者列表项目的最小数目。必须大于或等于0。

    pattern        定义可接受的字符的精确序列。

    totalDigits    定义所允许的阿拉伯数字的精确位数。必须大于0。

    whiteSpace    定义空白字符(换行、回车、空格以及制表符)的处理方式。

    xml复合类型指示器:

    order指示器:用于定义元素顺序

    1. <all> 指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次
    2. <sequence> 规定子元素必须按照特定的顺序出现
    3. <choice> 指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)

    Occurrence指示器:Occurrence 指示器用于定义某个元素出现的频率。

    1. <maxOccurs> 指示器可规定某个元素可出现的最大次数
    2. <minOccurs> 指示器可规定某个元素能够出现的最小次数

    Group指示器:Group 指示器用于定义相关的数批元素。

    1. 元素组通过 group 声明进行定义
    2. 属性组通过 attributeGroup 声明来进行定义
  • 相关阅读:
    Android 下拉刷新上啦加载SmartRefreshLayout + RecyclerView
    Maven 本地打war包
    数据库性能优化一
    SessionStateMode之Redis共享session
    SessionStateMode之SQL Server共享session
    iframe跨域
    Jenkins发布MVC应用程序
    Docker入门之一Docker在Window下安装
    Window下SVN服务器搭建以及客户端使用
    Window下Jenkins的安装
  • 原文地址:https://www.cnblogs.com/bing-08/p/10740643.html
Copyright © 2020-2023  润新知