zoukankan      html  css  js  c++  java
  • 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 声明来进行定义
  • 相关阅读:
    zookeeper使用场景
    zookeeper安装配置
    hadoop 远程调试
    deep learning笔记
    Sentiment Analysis(1)-Dependency Tree-based Sentiment Classification using CRFs with Hidden Variables
    PRML阅读笔记 introduction
    Python 学习笔记(2)
    python nltk 学习笔记(5) Learning to Classify Text
    python nltk 学习笔记(4) Writing Structured Programs
    python nltk 学习笔记(3) processing raw text
  • 原文地址:https://www.cnblogs.com/bing-08/p/10740643.html
Copyright © 2011-2022 走看看