前言:给大家讲讲dtd
码字不易,点个关注
转载请说明!
思维导图:
目录
1.什么是DTD?
文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。它是标准通用标记语言(SGML)和可扩展标记语言(XML)1.0版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。文档类型定义也可用做保证标准通用标记语言、可扩展标记语言文档格式的合法性,可通过比较文档和文档类型定义文件来检查文档是否符合规范,元素和标签使用是否正确。文件实例提供应用程序一个数据交换的格式
PS:简而言之,DTD就是用来约束XML文档的,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的
2.什么是格式良好xml
1.什么是xml?
可扩展标记语言
2.xml的作用
1.做数据的交互
2.做配置
3.标准的xml格式
1.有且只有一个根元素
2.XML标签区分大小写
3.正确使用结束标签
4.正确使用嵌套标签
5.使用合法的标签名
6.定义有效的属性
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张三</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>李四</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
3.元素定义
1.引入DTD约束
<!DOCTYPE persons[]>
2.添加元素定义
(*小写转大写 Ctrl+Shift+x)
<!ELEMENT br EMPTY>空元素
<!ELEMENT name (#PCDATA)>文本元素
<!ELEMENT element-name (e1,e2)>混合元素
3.元素的限制
*与(,)非(|)
次数:
0或1:?
0~N:*
1~N:+
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE persons[
<!-- 添加元素定义 Ctrl+shift+x小写转大写-->
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT br EMPTY>
]>
<persons>
<person>
<name>张三</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person>
<name>李四</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
4.属性定义
1.语法
<!ATTLIST person>
2. 属性类型type
- ID
- (男|女)
- CDATA 文本类型
- IDREF 依赖ID
- REFERENCE
3. 属性描述
- #REQUIRED:必填
- #IMPLIED:非必填
- '默认值' 注意:只有type为(男|女)类型时,desc才可以用默认值的方式
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE persons[
<!-- 添加元素定义
Ctrl+shift+x小写转大写
IDREF 依赖于ID类别
-->
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张三</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br />
</person>
<person pid="p2">
<name>李四</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
5.写一个DTD限制servlet相关配置(例题)
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE web-app [
<!-- 添加元素定义 Ctrl+shift+x小写转大写-->
<!-- 文本约束 -->
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!-- 元素分类 -->
<!ELEMENT web-app (servlet*,servlet-mapping*)>
<!-- 混合元素 -->
<!ELEMENT servlet (servlet-name,servlet-class)>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+)>
]>
<web-app>
<servlet>
<servlet-name>PersonsServlet</servlet-name>
<servlet-class>com.hpw.dtd.PersonsServlet1</servlet-class>
</servlet>
<servlet>
<servlet-name>PersonsServlet1</servlet-name>
<servlet-class>com.hpw.dtd.PersonsServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PersonsServlet</servlet-name>
<url-pattern>Persons1.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>PersonsServlet1</servlet-name>
<url-pattern>Persons2.jsp</url-pattern>
<url-pattern>Persons3.jsp</url-pattern>
</servlet-mapping>
</web-app>
6.写一个DTD限制config.xml(例题)
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- config标签:可以包含0~N个action标签 -->
<!DOCTYPE config[
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!-- action标签:可以饱含0~N个forward标签 path:以/开头的字符串,
并且值必须唯一 非空 ,子控制器对应的路径 type:字符串,非空,子控制器的完整类名 -->
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (false|true) 'true'
>
]>
<config>
<action path="/registerAction" type="test.action.RegisterAction">
<forward name="success" path="/index.jsp" redirect="true" />
<forward name="failed" path="/register.jsp" redirect="false" />
</action>
<action path="/loginAction" type="test.action.LoginAction">
<forward name="a" path="/index.jsp" redirect="false" />
<forward name="b" path="/welcome.jsp" redirect="true" />
</action>
</config>
到这里就结束了,我依旧是那个学IT的小学生
欢迎大佬指点