属性类型:
CDATA:字符串
<!ELEMENT birthday (#PCDATA)> <!-- 字符串 -->
<!-- CDATA:属性为普通的文本字符串 -->
<!ATTLIST birthday ID1 CDATA #REQUIRED>
<birthday ID1="A">2022-11-11</birthday>
枚举:多选一
<!ELEMENT age (#PCDATA)> <!-- 字符串 -->
<!-- 枚举:表示只能在一定范围内出现值,但是只能出现其中的一个 -->
<!ATTLIST age ID2 (AA|BB|CC) #REQUIRED>
<age ID2="AA">18</age>
ID:值只能是字母或者下划线开头
<!ELEMENT name (#PCDATA)> <!-- 字符串 -->
<!-- ID:值只能是字母或者下划线开头 -->
<!ATTLIST name ID3 ID #REQUIRED>
<name ID3="_AAA">zhangsan</name>
属性的约束:
#REQUIRED:属性值必须存在
<!ELEMENT name (#PCDATA)> <!-- 字符串 -->
<!-- ID:值只能是字母或者下划线开头 -->
<!ATTLIST name ID3 ID #REQUIRED>
<name >zhangsan</name>
如果没有设置属性值:
显示出错;
#IMPLIED:属性可有可无
<!ELEMENT age (#PCDATA)> <!-- 字符串 -->
<!-- 枚举:表示只能在一定范围内出现值,但是只能出现其中的一个 -->
<!ATTLIST age ID2 (AA|BB|CC) #IMPLIED>
<age>18</age>
没有设置属性值:
没有显示出错;
#FIXED:表示一个固定的值 #FIXED "QQ"
- 属性的值必须是设置的这个值
<!ELEMENT sex (#PCDATA)> <!-- 元素必须为空 -->
<!ATTLIST sex ID4 CDATA #FIXED "QQ">
<sex ID4="QQ"></sex>
属性不设置为QQ:
显示出错。
直接赋值:直接在属性
<!ELEMENT school (#PCDATA)> <!-- 任意类型元素 -->
<!ATTLIST school ID5 CDATA "RR">
<school ID5="RR">222</school>
如果不设置属性值:
没有错误;
如果不对school标签设置属性也不会报错,school标签属性的默认值就位"RR",如果为school标签属性设置了值,那么属性的值就为设置的值。
汇总:
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE person SYSTEM "Demo1.dtd"> -->
<!DOCTYPE person [
<!ELEMENT person (name+,age?,sex*,school,birthday)>
<!ELEMENT name (#PCDATA)> <!-- 字符串 -->
<!-- ID:值只能是字母或者下划线开头 -->
<!ATTLIST name ID3 ID #REQUIRED>
<!ELEMENT age (#PCDATA)> <!-- 字符串 -->
<!-- 枚举:表示只能在一定范围内出现值,但是只能出现其中的一个 -->
<!ATTLIST age ID2 (AA|BB|CC) #IMPLIED>
<!ELEMENT sex (#PCDATA)> <!-- 元素必须为空 -->
<!ATTLIST sex ID4 CDATA #FIXED "QQ">
<!ELEMENT school (#PCDATA)> <!-- 任意类型元素 -->
<!ATTLIST school ID5 CDATA "RR">
<!ELEMENT birthday (#PCDATA)> <!-- 字符串 -->
<!-- CDATA:属性为普通的文本字符串 -->
<!ATTLIST birthday ID1 CDATA #REQUIRED>
]>
<person>
<name ID3="_AAA">zhangsan</name>
<age>18</age>
<sex ID4="QQ"></sex>
<school>222</school>
<birthday ID1="A">2022-11-11</birthday>
</person>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)