目录
1)有且只有一个根节点; 2)由开始标签和结束标签组成; 3)XML标签区分大小写; 4)正确嵌套标签;
1.dtd与xml思维导图参考图片
1)xml
2)dtd
2.什么是dtd
DTD为英文Document Type Definition,中文意思为“文档类定义”。DTD肩负着两重任务: 一方面它帮助你编写合法的代码 ,另一方面它让浏览器正确地显示器代码。也许你会问它们居然有这样的能力?
如是你是一个个网页制作者,你会很清楚地知道一个HTML文档的基本结构可分为两个主要部分;
<html> <head> 头部信息 </head> <body> 可视内容 </body> </html>
3.什么是XML?
http://t.csdn.cn/97Tlohttp://t.csdn.cn/97Tlo
4.XML格式要求(合法XML)
1)有且只有一个根节点;
2)由开始标签和结束标签组成;
3)XML标签区分大小写;
4)正确嵌套标签;
5.如何使用DTD
5.1 在XML中加入DTD申明
1)内部申明:<! DOCTYPE root[]>
2)外部申明:<!DOCTYPE 文档根节点 SYSTEM “DTD文件名”>5.2 元素定义语法(DTD对元素的限制)
基本语法:<! ELEMENT 元素名称 元素类型 >元素分类:EMPTY 空元素
(#PCDATA) 文本元素
(e1,e2) 混合元素元素限制:,(顺序)、|(或,多选一)、?(0或1次),*(1*0=0,0次或多次), +(1+0=1,1次或多次)
5.3 属性定义语法(DTD对属性的限制)
基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
属性类型:ID/CDATA/ENUM (男|女)设置说明:#REQUIRED(必须)/#IMPLIED(可选)
5.4 特殊符号转义
&(逻辑与) --> &
>(大于) --> >
<(小于) --> <
‘(单引号) --> '
“(双引号) --> "
6.dtd&&xml案例与举例:
6.1合法的XMLDTD是用户自行为其文件所定义的结构,我们在浅口面已经介绍过什么事合理的XML文件,现在我们要介绍合法的XML文件。所谓合法的XML文件即之文件不仅符合XML标准的规范,而且还符合自行定义的DTD所规定的组织结构。
DTD文件类型定义主要用来定义文件的类型,主要规范XML文件的格式i。DTD必须出现在文件的表头之中,所以XML分析器在一开始便会知道一份发文件的格式定义,一份DTD规范了下面的内容:
定义ENTITY声明
定义组成元素的元素
定义属性的种类
定义组成一个标记的元素种类
定义组成一个标记元素的排行方式
6.2DTD对元素的限制代码案例(web)<!DOCTYPE web-app[ <!ELEMENT web-app (display-name,context-param,listener+,filter,filter-mapping,servlet,servlet-mapping,welcome-file-list) > <!ELEMENT display-name (#PCDATA) > <!ELEMENT context-param (param-name,param-value)> <!ELEMENT listener (listener-class+) > <!ELEMENT listener-class (#PCDATA) > <!ELEMENT filter (filter-name,filter-class,async-supported,init-param) > <!ELEMENT filter-name (#PCDATA) > <!ELEMENT filter-class (#PCDATA) > <!ELEMENT async-supported (#PCDATA) > <!ELEMENT init-param (param-name,param-value) > <!ELEMENT param-name (#PCDATA) > <!ELEMENT param-value (#PCDATA) > <!ELEMENT filter-mapping (filter-name,url-pattern) > <!ELEMENT url-pattern (#PCDATA) > <!ELEMENT servlet (servlet-name,servlet-class,init-param,load-on-startup,async-supported) > <!ELEMENT servlet-name (#PCDATA) > <!ELEMENT servlet-class (#PCDATA) > <!ELEMENT load-on-startup (#PCDATA) > <!ELEMENT servlet-mapping (servlet-name,url-pattern) > <!ELEMENT welcome-file-list (welcome-file) > <!ELEMENT welcome-file (#PCDATA) > ]> <web-app> <display-name>Archetype Created Web Application</display-name> <!-- Spring和web项目集成start --> <!-- spring上下文配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 读取Spring上下文的监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring和web项目集成end --> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- 中文乱码处理 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <!--web.xml 3.0的新特性,是否支持异步--> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/home/index.shtml</welcome-file> </welcome-file-list> </web-app>
6.3DTD对属性的限制<!DOCTYPE config[ <!ELEMENT config (action+) > <!ELEMENT action (forward*) > <!ELEMENT forward EMPTY> <!-- 属性约束 --> <!ATTLIST action path CDATA #REQUIRED type CDATA #REQUIRED > <!ATTLIST forward name CDATA #IMPLIED path CDATA #REQUIRED redirect (true|false) "true" > ]> <config> <!-- action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径 type:字符串,非空,子控制器的完整类名 --> <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>