一.XML的良好格式
1.xml作用
数据的交互做配置
2.xml格式
1.有且只有一个根元素
2.XML标签大小写正确区分
3.正确使用结束标签
4.正确嵌套标签
5.使用了合法的标签名
6.定义有效的属性(后面会讲如何定义有效属性)
请看代码
<?xml version="1.0" encoding="UTF-8"?>
<persons><!--persons就是根元素有且只有一个
要注意开始和结尾的大小写一定要相同不然会报错
例:<persons></Persons> -->
<person>
<name>张小明</name>
<age>10</age>
<!-- 标签的结束位置不可以乱用要成对
例:<name>张小明
<age>10</name></age> -->
<contact>
<phone>1234567</phone>
</contact>
<!-- 合法使用标签名
例 <?></?>就会报错 -->
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
<!-- 要正确嵌套标签
后面我们会讲如何约束xml中的标签
例:<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
age就和contact是同级标签都在person里面
而email标签就只能放在contact标签里面
-->
</person>
</persons>
二.元素定义
在我们定义XML文件时,首先要在XML文件元素中加入DTD声明(),
然后在[ ]中定义元素。
元素的分类:
1,<!ELEMENT 元素名 EMPTY>//空元素 例如:
2 ,<!ELEMENT 元素名 (#PCDATA)> ----文本元素 例如:小黑
3,<!ELEMENT 元素名 (元素1,元素2)> —混合元素 在括号内写元素时一定要按顺序,否则编译报错
元素的限制:
1,?0或1个
2,* 0到多个
3,+ 1到多个
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 br EMPTY>
]>
<!-- 这里就讲了上面的合理嵌套
所有的元素都必须被根元素persons包含
person,name,age,contact,br都可以看作同级元素谁都不可以嵌套谁
而phone,email只能被放在contact元素里面,可以看作是他的子元素
-->
<persons><!--persons就是根元素有且只有一个
要注意开始和结尾的大小写一定要相同不然会报错
例:<persons></Persons> -->
<person>
<name>张小明</name>
<age>10</age>
<!-- 标签的结束位置不可以乱用要成对
例:<name>张小明
<age>10</name></age> -->
<contact>
<phone>1234567</phone>
</contact>
<!-- 合法使用标签名
例 <?></?>就会报错 -->
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
<!-- 要正确嵌套标签
后面我们会讲如何约束xml中的标签
例:<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
age就和contact是同级标签都在person里面
而email标签就只能放在contact标签里面
-->
</person>
</persons>
例2:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app[
<!--添加元素定义 -->
<!ELEMENT web-app (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)>
]>
<web-app>
<servlet>
<servlet-name>jrebelServlet</servlet-name>
<servlet-class>com.zking.xml.JrebelServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>jrebelServlet2</servlet-name>
<servlet-class>com.zking.xml.JrebelServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jrebelServlet</servlet-name>
<url-pattern>/jrebelServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jrebelServlet2</servlet-name>
<url-pattern>/jrebelServlet2</url-pattern>
<url-pattern>/jrebelServlet3</url-pattern>
</servlet-mapping>
</web-app>
3,属性定义:
属性定义格式 <!ATTLIST 元素名 属性名 属性类型 描述>
属性类型:
1,ID 表示唯一
2,(男|女)‘男’ 二选一,有默认值
3,CDATA 文本类型
4,IDREF 依赖 引用已经出现过的类型
属性描述:
1,#REQUIRED 必填
2,#IMPLIED 非必填
3,‘默认值’ (但属性类型为上面所写的第二点才可以使用)
例:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义元素-->
<!DOCTYPE config [
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ELEMENT forward EMPTY >
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!-- 定义元素的属性-->
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #IMPLIED
redirect (true|false) 'true'
>
]>
<!--config标签:可以包含0~N个action标签 -->
<config>
<!--action标签:可以饱含0~N个forward 标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径 type:字符串,非空,子控制器的完整类名 -->
<action type="test.action.RegisterAction" path="/registerAction">
<forward path="/index.jsp" redirect="true" name="success" />
<forward path="/register.jsp" redirect="false" name="failed" />
</action>
<action type="test.action.LoginAction" path="/loginAction">
<forward path="/index.jsp" redirect="false" name="a" />
<forward path="/welcome.jsp" redirect="true" name="b" />
</action>
</config>
今天的代码就结束了,如果有不懂的记得私信我。
感谢观看