XML DTD


# 声明

    在XML中如下声明 DTD

        <!DOCTYPE root-element SYSTEM "URI">
        <!DOCTYPE root-element PUBLIC "prefix//owner//desc//lang" "URI">

    其中

        root-element 是根元素
        URI 是 DTD 文件的相对或绝对 URI
        prefix 为
                    ISO 表示该DTD是ISO标准
                    +   表示该DTD不是 ISO 标准,但已被批准
                    -   表示该DTD不是 ISO 标准,且未被批准
        owner  表示DTD所有者
        desc    为该DTD描述信息
        lang     ISO 639 语言代码

    例如

        <!DOCTYPE document SYSTEM "subjects.dtd">
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">



# 元素(Element)定义

    
o 空元素

    <!ELEMENT element-name EMPTY>

    空元素没有属性,没有子元素或文本内容

    例如定义空元素 br:

        <!ELEMENT br EMPTY>

    则在XML可以定义:

        <br/>

o PCDATA 元素

    PCDATA 指 Parsed Character DATA,即经过解析器解析的文本(与 CDATA 相反)
    定义只包含 PCDATA(无子元素)的元素的格式是

        <!ELEMENT element-name (#PCDATA)>

o 包含任意内容的元素

    <!ELEMENT element-name ANY>

o 包含子元素的元素

    <!ELEMENT element-name (child-name,child-name,...)>

        - XML中,子元素出现的顺序必须按照这里声明的顺序
        - 子元素必须也在 DTD 中定义,可以放在父元素的定义之后

    child-name 后面可以加以下后缀

        - ? 表示此子元素允许出现0或1次
        - * 表示此子元素可出现0或任意次
        - + 表示此子元素可出现1或任意次
        - 如果没有任何后缀,则必须且只能出现1次

o 包含子元素多选一

    用 (child-name1|child-name2|...) 表示多选一,如

        <!ELEMENT parent (child1,child2, (child3|child4), child5)>
    
    多选一子元素声明后面也可以增加后缀,如

        <!ELEMENT parent (child1,child2, (child3|child4)?)>


o 包含PCDATA和子元素的元素

    #PCDATA 可以与子元素名称混用,如

        <!ELEMENT parent (#PCDATA|child1|child2|child3|child4|child5)*>


# 属性(Element Attribute)   定义


    属性定义的格式是

        <!ATTLIST element-name attribute-name type value>

    其中,type 可以为

        - CDATA 表示属性值为字符
        - (v1|v2|...) 表示属性值为 v1, v2, ... 之一(枚举)
        -

    value 可以为

        - "value" 表示默认值
        - #REQUIRED 表示该属性值必须指定
        - #IMPLIED 表示该属性值可缺省(但无默认值)
        - #FIXED "value" 表示该属性值必须为 value

o 属性默认值

    <!ATTLIST element-name attribute-name CDATA "value">
    
o 枚举值

    <!ATTLIST element-name attribute-name (v1|v2|...) "value">

    其中 "value" 表示默认值,为 v1,v2... 之一


# Entity 定义


    XML 使用 Entity 的格式是

        &entity-name;

    DTD 定义 Entity 的格式是

        <!ENTITY entity-name "value">


posted @ 2013-08-05 18:31  Jack of Hearts  阅读(235)  评论(0编辑  收藏  举报