dtd(文档类型定义)

前言:给大家讲讲dtd

 码字不易,点个关注

 转载请说明!


思维导图:


目录

1.什么是DTD? 

2.什么是格式良好xml

1.什么是xml?

2.xml的作用

3.标准的xml格式

3.元素定义

4.属性定义

5.写一个DTD限制servlet相关配置(例题)

6.写一个DTD限制config.xml(例题)



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的小学生 

欢迎大佬指点 

Guess you like

Origin blog.csdn.net/weixin_56069070/article/details/119189211
DTD