DTD学习笔记

1、什么是DTD

     一种xml约束技术。是一种编写文档,用于约束xml的。

2、声明方式

      2.1 外部声明(本地)

       <!DOCTYPE 根元素 SYSTEM "文件名">

          如  <!DOCTYPE 数 SYSTEM "e:f.dtd">

     2.2外部声明(网址)

      <!DOCTYPE 文档根节点  PUBLIC "文件名"  “dtd文件的url”>

         如<!DOCTYPE web PUBLIC "sss" "https:xxx.xxx.xxx">

     2.3 内部声明

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

3、元素

      <!ELEMENT 元素名称 元素类型(内容)>

         元素内容:   <!ELEMENT 人 (男人,女人)>表示人 有两种内容类型,一个是男人(ELEMENT)一种是女人(ELEMENT)

                                逗号分隔表示内容出现的顺序是跟声明时候一致的(男人,女人) 就是先男人后女人,如果是|来分隔的话,就是其中一种可能,既可以多个也可以一个

                                +,*,?设置内容元素出现的次数

                                +:表示一次或者多次

                                ?:0次或者一次

                                *:0次或者多次

                                 列子:

                                            <!ELEMENT 人 ((男人,女人)|老人?)|(中国人+,美国人*)>

         元素类型:EMPTY    用于定义空元素

                             ANY        表示元素内容是任意类型

                             PCDATA  表示任意字符内容

                            

4、属性

       <!ATTLIST 元素名称 属性名称 属性类型 默认值>

       4.1 元素名称

             对应 ELEMENT中的元素名称,也就是为哪个元素名称设置属性

       4.2 属性类型

           

CDATA值为字符数据 (character data)
(en1|en2|..)此值是枚举列表中的一个值
ID值为唯一的 id,属性值就是唯一值,不能重复
IDREF值为另外一个元素的 id
IDREFS值为其他 id 的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
NOTATION此值是符号的名称
xml:值是一个预定义的 XML 值

4.3 描述

#REQUIRED属性值是必需的
#IMPLIED属性不是必需的
#FIXED value属性值是固定的
     如果不指定,可以设置默认值或者不设置默认值

 4.4属性名称

        就是有什么属性

     列子:

                 <!ATTLIST  人

                                      姓名  CDATA  #IMPLIED

                                      年龄  CDATA  #IMPLIED

                                      帅不  CDATA  #FIXED  "默认值"

                                      有钱  CDATA  "默认值"

                                      技能  (Android|JAVA)"JAVA"

                 >

4.5 实体

       引用实体

       <!ENTITY 实体名称 "实体的值">

        使用:

                   &实体名称;

                   如:<!ENTITY 实体名称 "实体的值">

                         然后在书写xml的时候就可以直接&web;

        参数实体

         <!ENTITY %  web  "ssss">

        使用:

                  %实体名称

                   列子:

                                 <!ENTITY %  web  "

                                       姓名  CDATA  #IMPLIED

                                      年龄  CDATA  #IMPLIED

                                      帅不  CDATA  #FIXED  "默认值"

                                      有钱  CDATA  "默认值"

                                      技能  (Android|JAVA)"JAVA"

                                  ">

 

                 <!ATTLIST  人   %web   >

       参数实体和引用实体的区别是在于,后者是给xml用的,前者是用于配置xml

       引用外部实体

        <!ENTITY 实体名称 SYSTEM "URI/URL">

         如:

        <!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

       <author>&writer;</author>




<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE TVSCHEDULES [
<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>
<TVSCHEDULES>
    <TVSCHEDULE NAME="1111">
        <CHANNEL CHAN="asdasd">
            <BANNER>
                asdasdas
            </BANNER>
            <DAY >
                <DATE>asdasdasd</DATE>
                <HOLIDAY>asdasd</HOLIDAY>
            </DAY>
        </CHANNEL>
    </TVSCHEDULE>
</TVSCHEDULES>
<TVSCHEDULES>
    <TVSCHEDULE NAME="1111">
        <CHANNEL CHAN="asdasd">
            <BANNER>
                asdasdas
            </BANNER>
            <DAY >
                <DATE>asdasdasd</DATE>
                <PROGRAMSLOT>                
                <TIME>sss</TIME>
                <TITLE RATING="asdad"  LANGUAGE="adasdasd">sss</TITLE>
                <DESCRIPTION>asdasds</DESCRIPTION>
                </PROGRAMSLOT>
            </DAY>
        </CHANNEL>
    </TVSCHEDULE>
</TVSCHEDULES>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值