转载

DTD

DTD(Document Type Definition)

用一句话概括DTD, 就是定义XML文档结构的一种方式

外部DTD和内部DTD

  • 内部DTD:XML文档结构定义在XML文档本身中

    <! DOCTYPE 根元素名[ <!ELEMENT 元素名 (元素类型定义)>
    ]>
    
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE person [ <!ELEMENT person (name, address, gender)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT address (#PCDATA)>
        <!ELEMENT gender (#PCDATA)>
    ]>
    <person>
    	<name>Bob</name>
    	<address>America</address>
    	<gender>male</gender>
    </person>
    
  • 外部DTD:XML文档结构定义在外部的一个独立文件中(通常采用的方式

    内部DTD,可能造成xml文档过大,另一方面外部的DTD可以让多个xml文档共用

    <!--person.dtd文件-->
    <!DOCTYPE person [ <!ELEMENT person (name, address, gender)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT address (#PCDATA)>
        <!ELEMENT gender (#PCDATA)>
    ]>
    

    xml文档

    <!-person.xml文件-->
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE person SYSTEM "person.dtd">
    <person>
    	<name>Bob</name>
    	<address>America</address>
    	<gender>male</gender>
    </person>
    
  • 元素

    #PCDATA是元素唯一的原子类型,具体来说可以是字符串,子元素,字符串和子元素

    EMPTY,空元素,可以有属性

    (element1, element2, element2):按顺序包含一下子元素

    (element1 | element2): 包含element1元素或者element2元素

    (element1+): ?代表出现0次或者1次,*表示出现0次或者多次,+出现一次或者多次

  • 属性

    <order orderNo="23456" customer="John Smith" date="October 15, 2002">
    	<item itemNo="a528" quantity="1"/>
    	<item itemNo="c817" quantity="3"/>
    </order>
    
    <!ELEMENT order (item+) >
    <!ATTLIST order orderNo ID #REQUIRED customer CDATA #REQUIRED date CDATA #REQUIRED>
    <!ELEMENT item EMPTY>
    <!ATTLIST item itemNo ID #REQUIRED quantity CDATA #REQUIRED comments CDATA #IMPLIED>
    

    属性表是由一个三元组构成的,分别是属性名, 属性类型, 值类型

    属性类型

    CDATA:单纯的字符串, ID:在整个XML文档中唯一确定的名字

    IDREF:指向另一个元素的索引,该元素与本IDREF属性拥有同样的ID属性值

    IDREFS:一系列IDREF

    ( v 1 v_1 |…| v n v_n ), 所有可能值的一个枚举

    值类型

    #REQUIRED:必须出现,#IMPLIED:可选的,FIXED:被dtd固定,无法更改,value:固定默认值

    <!--默认为mime-->
    <!ATTLIST attachment encoding (mime | binhex) "mime" file CDATA #REQUIRED>
    
正文到此结束
本文目录