目录:
1、 什么是格式良好XML
2、 在XML加入DTD声明
3、 元素定义的语法
4. 元素的分类
5. 元素的限制
6. 属性定义的语法
7. XML中的特殊符号
框架的由来:
就是由多种设计模式配合形成的
特定的框架处理特定问题
底层是通过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="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>123@qq.com</email>
</contact>
</person>
</persons>
二、 在XML加入DTD声
<!DOCTYPE root[]>
三、元素定义的语法
<!ELEMENT element-name (type)>
注:根标签也要定义!!!
四、元素的分类
<!ELEMENT element-name EMPTY>//空元素
<!ELEMENT element-name (#PCDATA)>//文本元素
<!ELEMENT element-name (e1,e2)>//混合元素
五、元素的限制
简单元素:没有子元素的元素 <!ELEMENT 元素名 约束> 如:<!ELEMENT name (#PCDATA)>
约束: (#PCDATA): 约束name是字符串类型
EMPTY : 元素为空(没有内容)
ANY:任意类型
复杂元素:有子元素的元素 <!ELEMENT 元素名称 (子元素)> 如:<!ELEMENT person (name+,age?,sex*,school)>
子元素后面的符号表示子元素出现的次数 + :表示一次或者多次
? :表示零次或者一次
* :表示零次或者多次
无 :子元素只能出现一次
子元素直接使用逗号进行隔开 ,表示元素出现的顺序
子元素直接使用|隔开,表示元素只能出现其中的任意一个
代码演示:
<!DOCTYPE persons [
<!ELEMENT persons (person*) ><!-- +代表出现1~n次,*代表出现0~n次 -->
<!ELEMENT person (name,age,contact,br?) > <!-- 混合元素 ?表示:0或1-->
<!ELEMENT name (#PCDATA) > <!-- #PCDATA表示文本元素 -->
<!ELEMENT age (#PCDATA) >
<!ELEMENT contact (phone|email) > <!-- ,表示 :并且 |表示:或者 -->
<!ELEMENT phone (#PCDATA) >
<!ELEMENT br EMPTY > <!-- EMPTY表示空元素 -->
<!ELEMENT email (#PCDATA) >
]>
六、属性定义的语法
<!ATTLIST element-name att_name type >语法: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性类型: CDATA: 字符串 如:<!ATTLIST birthday ATT CDATA #REQUIRED>
枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个 。如<!ATTLIST age ATT2 (AA|BB|CC) #REQUIRED>
ID: 值只能是字母或者下划线开头 <!ATTLIST name ATT3 ID #REQUIRED>
属性的约束: #REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED: 表示一个固定值 <!ATTLIST sex ATT4 CDATA #FIXED "ABC">
直接值: 不写属性,使用直接值,写了属性,使用设置那个值 <!ATTLIST school ATT5 CDATA "WWW">
注意:ATTLIST 是 attributeList 的缩写
图解:
代码演示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!ELEMENT persons (person*) ><!-- +代表出现1~n次,*代表出现0~n次 -->
<!ELEMENT person (name,age,contact,br?) > <!-- 混合元素 ?表示:0或1-->
<!ELEMENT name (#PCDATA) > <!-- #PCDATA表示文本元素 -->
<!ELEMENT age (#PCDATA) >
<!ELEMENT contact (phone|email) > <!-- ,表示 :并且 |表示:或者 -->
<!ELEMENT phone (#PCDATA) >
<!ELEMENT br EMPTY > <!-- EMPTY表示空元素 -->
<!ELEMENT email (#PCDATA) >
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF 引用
>
<!-- ATTLIST 缩写前:attributeList -->
<!-- IDREF 引用 -->
<!-- #REQUIRED/#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>123@qq.com</email>
</contact>
</person>
</persons>
七、XML中的特殊符号
&(逻辑与) &
<(小于) <
>(大于) >
"(双引号) "
'(单引号) '
config.xml 案例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [
<!ELEMENT config (action*)> <!-- config标签:可以饱含0~N个action标签 -->
<!ELEMENT action (forward*)> <!-- action标签:可以饱含0~N个forward标签 -->
<!--
path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
type:字符串,非空,子控制器的完整类名
-->
<!ELEMENT forward EMPTY>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (true|false) '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>