DTD入门笔记

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 根元素 [ <!-- 根目录定义, 如果dtd为单独的文件, 在xml使用 <!DOCTYPE 根元素 SYSTEM "文件名"> -->
    <!ELEMENT 根元素 (基本, 次数+, 或1+, 或2+, 属性元素+, 使用实休)> <!-- 定义元素: 根目录的子元素 -->

    <!-- <!ELEMENT 元素名称 类型> 或 <!ELEMENT 元素名称 (元素内容)> -->
    <!ELEMENT 基本 (文本, 空元素, 带有任何内容的元素)>
    <!-- 子元素信息, PCDATA = 解析的字符数据(parsed character data), CDATA = 字符数据(character data) -->
    <!ELEMENT 文本 (#PCDATA)>
    <!ELEMENT 空元素 EMPTY>
    <!ELEMENT 带有任何内容的元素 ANY>

    <!-- 带有子元素 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)> -->
    <!ELEMENT 次数 (只一次, 至少一次+, 零次或多次*)>
    <!ELEMENT 只一次 (#PCDATA)>
    <!ELEMENT 至少一次 ANY>
    <!ELEMENT 零次或多次 ANY>

    <!ELEMENT 或1 ((或值1_1|或值1_2))> <!-- 或值1_1与或值1_2只能出现一个 -->
    <!ELEMENT 或值1_1 (#PCDATA)>
    <!ELEMENT 或值1_2 (#PCDATA)>

    <!ELEMENT 或2 ((或值2_1|或值2_2)*)> <!-- 或值2_1与或值2_2可"不出现", 出现一个, 同时出现 -->
    <!ELEMENT 或值2_1 (#PCDATA)>
    <!ELEMENT 或值2_2 (#PCDATA)>

    <!ELEMENT 属性元素 (#PCDATA)>
    <!-- <!ATTLIST 属性元素 属性名称 属性类型 默认值> -->
    <!--
        属性类型选项:
        CDATA       值为字符数据 (character data)
        (v1|v2|..)  此值是枚举列表中的一个值
        ID          值为唯一的 id
        IDREF       值为另外一个元素的 id
        IDREFS      值为其他 id 的列表
        NMTOKEN     值为合法的 XML 名称
        NMTOKENS    值为合法的 XML 名称的列表
        ENTITY      值是一个实体
        ENTITIES    值是一个实体列表
        NOTATION    此值是符号的名称
        xml:        值是一个预定义的 XML 值

        值           属性的默认值
        #REQUIRED    属性值是必需的
        #IMPLIED     属性不是必需的    <!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>
        #FIXED value 属性值是固定的
    -->
    <!ATTLIST 属性元素 属性名称 CDATA "默认值">
    <!ATTLIST 属性元素 非必要属性1 CDATA #IMPLIED>
    <!ATTLIST 属性元素 非必要属性2 CDATA #IMPLIED>
    <!-- 没有默认值选项,但是仍然希望强制作者提交属性的话,请使用关键词 #REQUIRED -->
    <!ATTLIST 属性元素 必要属性 CDATA #REQUIRED>
    <!ATTLIST 属性元素 固定值属性 CDATA #FIXED "value">
    <!ATTLIST 属性元素 枚举属性值 (v1|v2) "v1"> <!-- <!ATTLIST 元素名称 属性名称 (en1|en2|..) 默认值> -->

    <!--
        实体相当于定义变量, 是用于定义引用普通文本或特殊字符的快捷方式的变量
        实体引用是对实体的引用
        实体可在内部或外部进行声明
        <!ENTITY 实体名称2 SYSTEM1 "URI/URL">  外部实体定义
    -->
    <!ENTITY 实体名称 "实体的值"> <!-- 内部实体定义 -->
    <!ENTITY 实体名称1 "1 2 3 4 5"> <!-- 定义实体, 实体引用使用 &实体名称1; -->
    <!ELEMENT 使用实休 (e1+)>
    <!ELEMENT e1 (#PCDATA)>
    ]>
<根元素>
    <基本>
        <文本>text</文本>
        <空元素 />
        <带有任何内容的元素>111</带有任何内容的元素>
    </基本>

    <次数>
        <只一次>111</只一次>
        <至少一次>222</至少一次>
        <至少一次>333</至少一次>
    </次数>
    <次数>
        <只一次>111</只一次>
        <至少一次>222</至少一次>
        <至少一次>333</至少一次>
        <零次或多次>4444</零次或多次>
        <零次或多次>4444</零次或多次>
        <零次或多次>4444</零次或多次>
        <零次或多次>4444</零次或多次>
    </次数>

    <或1>
        <或值1_1>1</或值1_1>
    </或1>
    <或1>
        <或值1_2>1</或值1_2>
    </或1>

    <或2>
        <或值2_1>1</或值2_1>
        <或值2_2>1</或值2_2>
    </或2>

    <属性元素 属性名称="aa" 非必要属性1="333" 必要属性="33" 固定值属性="value" 枚举属性值="v2" />
    <使用实休>
        <e1>&实体名称1;</e1>
    </使用实休>
</根元素>

 

部分内容来自: https://www.w3school.com.cn/dtd/index.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值