1.什么是DTD?
文档类型定义 (document type definition) (约束)
2.什么是XML?
HTML:超文本标记语言
XML:可扩展标记语言
3.XML的两种文档约束
DTD和Schema
4.XML格式要求(合法XML)
1)有且只有一个根节点;
2)由开始标签和结束标签组成;
3)XML标签区分大小写;
4)正确嵌套标签;
5)使用合法的标签名,不能使用特殊符号;
6)定义有效的属性;
5.使用DTD
5.1 在XML中加入DTD申明
1)内部申明:<!DOCTYPE root[]>
2)外部申明:<!DOCTYPE 文档根节点 SYSTEM(PUBLIC) “DTD文件名”>5.2 元素定义语法(DTD对元素的限制)
基本语法:<!ELEMENT 元素名称 元素类型 >元素分类:EMPTY 空元素 <br/>
(#PCDATA) 文本元素
(e1,e2) 混合元素元素限制:,(顺序)、|(或,多选一)、?(0或1次),*(1*0=0,0次或多次), +(1+0=1,1次或多次)
5.3 属性定义语法(DTD对属性的限制)
基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
属性类型:ID/CDATA/ENUM (男|女) "男" IDREF设置说明:#REQUIRED(必须)/#IMPLIED(可选)
例:
<!DOCTYPE persons[
<!ELEMENT persons (person+) >
<!ELEMENT person (name,Age,contact,br?) >
<!ELEMENT name (#PCDATA) >
<!ELEMENT Age (#PCDATA) >
<!ELEMENT contact (email | _phone) >
<!ELEMENT _phone (#PCDATA) >
<!ELEMENT br EMPTY >
<!ELEMENT email (#PCDATA) >
<!ATTLIST person
pid CDATA #REQUIRED
sex (男|女) #IMPLIED
qq CDATA #IMPLIED
parent CDATA #IMPLIED
>
]>
5.4 特殊符号转义
&(逻辑与) --> &
>(大于) --> >
<(小于) --> <
‘(单引号) --> '
“(双引号) --> "
案例:
<!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 param-name (#PCDATA)>
<!ELEMENT param-value (#PCDATA)>
<!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 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>