<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入外部的dtd文件 -->
<!DOCTYPE Student SYSTEM "导入约束.dtd">
<Student>
<name nameId="_98k"><!-- &dht; --> 我是实体</name>
<age/>
<sex sexId="AA">菜鸡</sex>
<birthday birId="bir1">2.30</birthday>
<team teamId="仁爱第三工作室">仁爱团队</team>
<task taskId="玩滑板去啦">Happy!!</task>
</Student>
导入约束.dtd
<!ELEMENT Student (name+, age?, sex*, birthday+, team+, task*)>
<!-- 属性定义格式:属性名称 属性类型 属性约束。属性就是标签里面的id, class... -->
<!-- 定义子元素类型。name 姓名 (#PCDATA): 字符串类型 -->
<!ELEMENT name (#PCDATA)>
<!-- 元素: name; 属性名称:nameId;属性类型: ID(只能以字母或者下划线开头); 属性约束:#REQUIRED(必须定义该属性(not null)) -->
<!ATTLIST name nameId ID #REQUIRED>
<!-- EMPTY: 空类型 -->
<!ELEMENT age EMPTY>
<!-- 属性类型: 字符串; 属性约束:#IMPLIED( 属性可有可无) -->
<!ATTLIST age ageId CDATA #IMPLIED>
<!-- ANY: 任意类型 -->
<!ELEMENT sex ANY>
<!-- 属性类型: 枚举; -->
<!ATTLIST sex sexId (AA|BB|CC) #REQUIRED>
<!ELEMENT birthday (#PCDATA)>
<!-- 属性类型:CDATA (字符串类型); -->
<!ATTLIST birthday birId CDATA #REQUIRED>
<!ELEMENT team (#PCDATA)>
<!-- 属性约束:固定值(如果teamId属性存在,其值一定为固定值) -->
<!ATTLIST team teamId CDATA #FIXED "仁爱第三工作室">
<!ELEMENT task (#PCDATA)>
<!-- 属性约束:直接值(默认值,可更改,不写的时候采用此值) -->
<!ATTLIST task taskId CDATA "只要学不死">
<!-- 定义实体格式: <!ENTITY 实体名 "实体值"> -->
<!ENTITY dht "董小天">
<!-- 现在的浏览器都不怎么支持实体引用了,这是个无奈的现实。!!! 我就这样没了!? -->
<!--
举个栗子:<!ELEMENT name (#PCDATA)>
简单元素类型:
(#PCDATA): 字符串类型
EMPTY:空类型
ANY:任意类型
——————————————————————————————————————
举个栗子:<!ELEMENT Student (name+,age?,sex*,birthday+)>
元素间分隔符:
, :复杂元素中子元素必须按顺序出现
| : 只能出现其中的任意一个
子元素出现的次数:
+ : 表示一次或者多次
? :表示零次或者一次
* :表示零次或者多次
——————————————————————————————————————
举个栗子:nameId ID #REQUIRED
属性的约束:
#REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED "我是固定值": 属性值固定
"我是直接值": 属性值默认,也可更改
——————————————————————————————————————
-->