一、xml的dtd限制和应用
- DTD限制servlet相关标签
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app[
<!ELEMENT web-app ( display-name,welcome-file-list,servlet,servlet-mapping)>
<!ELEMENT servlet (servlet-name,servlet-class)>
<!ELEMENT servlet-mapping (servlet-name,url-pattern)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ATTLIST web-app
xmlns:xsi CDATA #REQUIRED
xmlns CDATA #IMPLIED
xsi:schemaLocation CDATA #IMPLIED
id CDATA #IMPLIED
version CDATA #IMPLIED
>
]>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Xml</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>IndexServlet</servlet-name>
<servlet-class>com.IndexServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>/index.do</url-pattern>
</servlet-mapping>
</web-app>
- 什么是格式良好且有效的XML
-
文档必须有根元素,有且只有一个根元素
元素定义的语法 <!ELEMENT element-name (type)> 注:根标签也要定义!!!
-
XML标签大小写正确区分
-
正确使用结束标签,文档必须有关闭标签
-
正确嵌套标签,元素必须被正确的嵌套
-
使用了合法的标签名
-
定义有效的属性
元素的分类
<!ELEMENT element-name EMPTY>//空元素
<!ELEMENT element-name (#PCDATA)>//文本元素
<!ELEMENT element-name (e1,e2)>//混合元素
属性定义的语法
#REQUIRED
#IMPLIED
- DTD限制xml文档
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #IMPLIED
>
<!ATTLIST forward
name ID #REQUIRED
path CDATA #REQUIRED
redirect (true|false) 'true'
>
]>
<!--
config标签:可以包含0~N个action标签
-->
<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>
- xml的解析
- XML(eXtensive Markup Language)可扩展的标记语言,是万维网联盟(World Wide Web Consortium W3C)定义的一种标准。 可扩展性指允许用户按照XML规则自定义标记(tags 标签)。
- 作用:
作为微型数据库,存储数据;
作为通信数据;
用于不同平台,不用系统交换数据;
作为配置文件,为应用程序配置数据;
结合样式表语言,展示数据。 - 强项:轻松表达多层结构的数据;可扩展。
- 优点:平台无关,语言无关。设计目标是描述数据并集中于数据的内容,与显示分离。
- 提醒:不能用XML来直接写网页。即便是包含了XML数据,依然要转换成HTML格式才能在浏览器上显示。
xml特征 :纯文本 、严格的格式、可扩展(标记可扩展)。
二、Schema的应用
XML Schema介绍
- XML Schema用来描述 XML 文档的结构 ,定义XML文档中合法的内容块 ;
- XML Schema优于DTD,是DTD的替代品;
- XML Schema文件以.xsd作为文件扩展名 ;
- XML Schema在2001年5月2日成为W3C标准;
- Schema本生也是特殊的XML;
XML Schema文档结构
简单类型(元素,属性,Facet)、复杂类型元素、匿名类型、外置类型。
<xs:element name=“元素名” type=“元素类型"/>
Schema内置了很多类型,常用的类型有:
xs:string 字符串;
xs:decimal 浮点型;
xs:integer 整型;
xs:boolean 布尔型;
xs:date 日期;
xs:time 时间;
xs:是命名空间前缀,元素的默认值用属性default指定,例:
<xs:element name=“color” type=“xs:string” default=“red”/>
元素的固定值用属性fixed指定,例:
<xs:element name=“color” type=“xs:string” fixed=“red”/>
元素出现的次数用属性minOccurs、maxOccurs来表示,默认值为1,unbounded表示不限制次数,例:
<xs:element name=“comment” type=“xs:string” minOccurs=“0”/>
<xs:element name=“item” type=“xs:string” minOccurs=“99” maxOccurs=“unbounded”>
属性声明语法:
<xs:attribute name=“属性名” type=“属性类型"/>
属性声明通常会出现在元素声明中,Schema的内置类型同样对属性类型有效,属性的默认值用属性default指定;
<xs:attribute name=“gender" type=“xs:string” default=“male"/>
属性的固定值用属性fixed指定:
<xs:attribute name=“gender" type=“xs:string” fixed=“male"/>
属性必须或可选性用属性use指定:
<xs:attribute name=“gender" type=“xs:string” use=“required"/>
use属性值的取值有: optional(默认值)(可有可没有), required(必须有), prohibited(禁止,很少用)。
Facet(刻面):对xml元素或属性的简单数据类型进一步约束
- 限制字符串的长度, 包括 (length、minLength、maxLength) ;
- 限制整数的大小范围,包括 (minInclusive, maxInclusive, minExclusive, maxExclusive) ;
- 限制元素内容的枚举取值(enumeration);
- 限制浮点型数值的位数(totalDigits, fractionDigits) ;
定义在下列元素中:
<xs:simpleType>
<xs:restriction>
(此处写Facet)
</xs:restriction>
</xs:simpleType>
复杂类型元素:包含其他元素和文本或属性的 XML 元素,语法:
使用元素 xs:complexType/ 来定义
四种类型的复杂元素:只包含属性、只包含属性和子元素、只包含文本内容和属性、包含属性,子元素和文本内容。
只包含属性 :
<xs:element name=‘blank’>
xs:complexType
<xs:attribute name=‘base’ type=‘xs:integer’ use=‘optional’ default=‘10’/>
</xs:complexType>
</xs:element>
只包含属性和子元素:
<xs:element name=‘customer’>
xs:complexType
xs:sequence
<xs:element name=‘favor’ type=‘xs:string’/>
</xs:sequence>
<xs:attribute name=‘age’ type=‘xs:integer’/>
</xs:complexType>
</xs:element>
xml的简介
xml的约束
xml解析