DTD约束标签
<!ELEMENT 元素名称 类别> 或<!ELEMENT 元素名称 (元素内容)>
EMPTY:空标签
PCDATA:普通字符串(没有子标签)
顺序问题:
(A,B,C,D): 按顺序依次出现
(A|B|C|D):任意出现一个(枚举式出现)
数量问题:
A: 必须出现1次
A*: 可以出现0或多次
A+:可以出现1或多次
A?: 可以出现0或1次
约束属性
默认值:属性是否必须填写
#IMPLIED属性不是必需的
#FIXED value
CDATA值为字符数据 (character data)
(en1|en2|..)此值是枚举列表中的一个值
ID 值是唯一的
<!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文件如下:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TVSCHEDULE SYSTEM "test.dtd"> <TVSCHEDULE NAME="one"> <!-- #required必须出现的属性 --> <CHANNEL CHAN="001"> <!--因为有“+”表示一个或多个 --> <BANNER>just do it</BANNER> <!--#PCDATA: 字符串 --> <DAY> <!--因为有“+”表示一个或多个 --> <DATE></DATE> <HOLIDAY>暑假</HOLIDAY> <!-- 二者出现一个 --> </DAY> <DAY> <!--因为有“+”表示一个或多个 --> <DATE></DATE> <HOLIDAY>暑假</HOLIDAY> <!-- 二者出现一个 --> </DAY> </CHANNEL> <CHANNEL CHAN="002"> <BANNER>just do it</BANNER> <DAY> <DATE></DATE> <HOLIDAY>暑假</HOLIDAY> <PROGRAMSLOT VTR="v"> <!-- 属性可以选择要或不要 --> <TIME >2016.7.13</TIME> <TITLE RATING="r" LANGUAGE="l">今天学习DTD</TITLE> <!-- 属性可以选择要或不要 --> <DESCRIPTION></DESCRIPTION> <!-- ?为可以出现0次或1次 --> </PROGRAMSLOT> </DAY> </CHANNEL> </TVSCHEDULE>