dtd定义属性
语法
<!ATTLIST 元素名称 属性名称 属性类型 属性的约束 >
属性类型
- CDATA: 字符串
<!ATTLIST birthday ID1 CDATA #REQUIRED >
- 枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个。
<!ATTLIST age ID2 (AA|BB|CC) #REQUIRED >
- ID:值只能是字母或者下划线开头
<!ATTLIST name ID3 ID #REQUIRED >
属性的约束
- #REQUIRED:属性必须存在。
- #IMPLIED:属性可有可无。
- #FIXED: 表示一个固定值 #FIXED “AAA”,属性的值必须是设置的这个固定值。
<!ATTLIST sex ID4 CDATA #FIXED "ABC" >
- 直接值:不写属性,使用直接值,写了属性,使用设置那个值。
<!ATTLIST school ID5 CDATA "WWW" >
实体的定义
- 语法
<!ENTITY 实体名称 "实体的值">
<!ENTITY TEST "HAHAHEHE">
使用实体 &实体名称; 比如 &TEST;- 定义实体需要写在内部dtd里面, 如果写在外部的dtd里面,有某些浏览器下,内容得不到。
根据dtd文件编写xml示例
<!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 TVSCHEDULE SYSTEM "TV.dtd">
<TVSCHEDULE NAME="">
<CHANNEL CHAN="">
<BANNER></BANNER>
<DAY>
<DATE>2022-3-30</DATE>
<HOLIDAY></HOLIDAY>
<HOLIDAY></HOLIDAY>
<HOLIDAY></HOLIDAY>
<PROGRAMSLOT VTR="">
<TIME></TIME>
<TITLE LANGUAGE="" RATING=""></TITLE>
<DESCRIPTION></DESCRIPTION>
</PROGRAMSLOT>
</DAY>
</CHANNEL>
</TVSCHEDULE>