xml的DTD约束

1、什么是DTD:Document Type Definition(文档类型定义)

2、 如何在xml中引入DTD
1) 外部引入

当引用的文件在本地时
<!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">
当引用的文件是一个公共的文件时
<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

2)内部引入

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

外部引入示例

DTD文件
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,出版社,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者  (#PCDATA)>
<!ELEMENT 出版社 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部引入DTD -->
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>

    <>
        <书名 >Android 开发</书名>
        <作者>罗老师</作者>
        <出版社>新华书店出版</出版社>
        <价格>99.99元</价格>
    </>

    <>
        <书名>Java 核心技术</书名>
        <作者>sun 公司</作者>
        <出版社>新华书店出版</出版社>
        <价格>88.98元</价格>
    </>

    <>
        <书名>JavaScript 挑战编程</书名>
        <作者>老罗</作者>
        <出版社>新华书店出版</出版社>
        <价格>22.37元</价格>
    </>

</书架>

内部引入示例

<?xml version="1.0" encoding="UTF-8"?>
<!-- 内部引入DTD约束 -->

<!DOCTYPE 科目  [
      <!ELEMENT 科目 (英语,高数,概率,拓扑)>
     <!ELEMENT 英语 (#PCDATA)>
      <!ELEMENT 高数 (#PCDATA)>
       <!ELEMENT 概率 (#PCDATA)>
        <!ELEMENT 拓扑 (#PCDATA)>
         <!-- 内部属性声明
             格式:<!ATTLIST 元素名称 属性名称 属性类型 默认值>

             属性类型(部分):
                            CDATA  值为字符数据
                            (en1|en2|en3...)  枚举类型中的一个
                            ID       值为唯一的id   id只能以字符或者下划线开头
                            ENTITY 值为实体
                            ENTITIES 值为实体列表
             默认值参数:
                             #REQUIRED    属性值是必须的
                             #IMPLIED      属性值不是必须的
                             #FIXED   value  属性值是固定的(没有写出,xml自动定义)       

            -->
        <!ATTLIST 英语
           时间 CDATA #REQUIRED
           网址 CDATA #FIXED "http://3wshcool"
           次数 CDATA "3">

          <!ATTLIST 高数
            老师 CDATA #REQUIRED
            学分 CDATA #FIXED "5.0"
            地点 ID #REQUIRED   
            考试 CDATA #REQUIRED
            答疑 (一节课|两节课) #IMPLIED
            >
           <!-- 内部实体声明
             格式:<!ENTITY 实体名称 "实体的值">
            -->
           <!ENTITY writer "Bolt" >
           <!--实体参数
              在DTD的内部使用
           -->
        <!ENTITY % testdate1 "2016.06.20">
]>

<科目>
    <英语 时间="123"   次数 ="9"></英语>
    <高数 
    老师="高斯"
    地点="a1"
   答疑="一节课"
   考试="2016/09/12"
    >&writer;</高数>
    <概率></概率>
    <拓扑></拓扑>
</科目>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值