XML_DTD约束
-
框架的由来
就是由多种设计模式配合形成的
特定的框架处理特定问题
底层是通过Java的反射机制来完成 -
dtd
是xml配置文件的约束技术中的一种
web.xml 配置tomcat的一些东西schema --》是xsd文件
-
xml的用途?
1.做配置
2.做数据传输 -
html与xml区别?
约束的差异性html是超文本
xml是可拓展标记语言
xml能够通过字符串表示对象的结构
一.什么是格式良好的XML
1.1 有且只有一个根元素
1.2 XML标签大小写正确区分
1.3 正确使用结束标签
1.4 正确嵌套标签
1.5 使用了合法的标签名
1.6 定义有效的属性
格式代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person pid="p1" sex="男" qq="12345" parent="p2">
<name>张三</name>
<age>18</age>
<contact>
<phone>12345678</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>24235435@qq.com</email>
</contact>
</person>
</persons>
二.在XML加入DTD声明
<!DOCTYPE root[]>
三.元素定义的语法
<!DOCTYPE root[
<!ELEMENT element-name (type)>
注:根标签也要定义!!!
有多少个标签就声明多少个ELEMENT !
]>
四.元素的分类
<!ELEMENT element-name EMPTY>//空元素
<!ELEMENT element-name (#PCDATA)>//文本元素
<!ELEMENT element-name (e1,e2)>//混合元素
五.元素的限制
<!DOCTYPE persons [
<!ELEMENT persons (person*) >
<!-- +代表出现1~n次,*代表出现0~n次 -->
<!ELEMENT person (name,age,contact,br?) >
<!-- 混合元素 ?表示:0~1次 -->
<!ELEMENT name (#PCDATA) >
<!-- #PCDATA表示文本元素 -->
<!ELEMENT age (#PCDATA) >
<!-- #PCDATA表示文本元素 -->
<!ELEMENT contact (phone|email) >
<!-- ,表示 :并且 |表示:或者 -->
<!ELEMENT phone (#PCDATA) >
<!-- #PCDATA表示文本元素 -->
<!ELEMENT br EMPTY >
<!-- EMPTY表示空元素 -->
<!ELEMENT email (#PCDATA) >
<!-- #PCDATA表示文本元素 -->
]>
六、属性定义的语法
<!ATTLIST 标签名 属性名1 属性类型 属性说明 >属性类型可以是:
(1)CDATA:最普通的字符串;
(2)ENUMERATED (DTD没有此关键字),表示枚举,即(值1|值2|值3),需要括 号,只能在其中选择一个值
(3)ID:属性值需要以字母或下划线开头,取值不能重复;
属性说明可以是:
(1)#REQUIRED:必须设置;
(2)#IMPLED:可选值,表示该属性可有可无;
(3)#FIXED:固定值,通常语法为:#FIXED “固定值”
(4)直接值:表示属性的取值为该默认值
具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT email (#PCDATA)>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<!-- ctrl+shift+x/y -->
<persons>
<person pid="p1" sex="男" qq="sdfsf" parent="p2">
<name>张三</name>
<age>18</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>123456@qq.com</email>
</contact>
</person>
</persons>
七. XML中的特殊符号
&(逻辑与) &
<(小于) <
>(大于) >
"(双引号) "
'(单引号) '
DTD限制config.xml案例:
<?xml version="1.0" encoding="UTF-8"?>
<!--
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>