学习目标:
熟练使用DTD编写格式良好的XML文件
学习内容:
1、 XML的介绍
xml是指可扩展标记语言(EXtensible MArkup Language)
可以联想到HTML这门语言,从HTML的类比介绍中,xml在早期的主要功能也是传输数据
以前接触xml也就是web项目中的web.xml配置servlet的信息和Tomcat中的server.xml修改Tomcat端口号。
2、xml的语法介绍(标签约束和属性约束)
xml的语法介绍(eclipse)
<?xml version="1.0" encoding="UTF-8"?>
xml的注意事项
1.有且只有一个根元素
2.xml标签大小写正确区分
3.正确使用结束标签
4.正确使用嵌套标签
5.是用来合法的标签名
6.定义有效的属性,且属性一定放在引号中
下面是一个简单的xml,大家可以观察一下代码,可以动手试试,观察报错
<students>
<student sid="a1001" sex="男" pid="a1002">
<name>小名</name>
<age>18</age>
<concat>
<tel>12345678910</tel>
</concat>
</student>
<student sid="a1002" sex="男">
<name>小名</name>
<age>18</age>
<concat>
<email>123@qq.com</email>
</concat>
</student>
</students>
给xml添加约束有俩种技术:
1. DTD:文档类型定义 (Document Type Definition)用来约束XML文档,保证XML文件的正确性和数据的有效性
2.Schema:xsd-XML Schema Document 是一种用来代替DTD约束的新方式,功能上比DTD更流弊一些,可以验证数据类型
3、 DTD约束的写法
必须在XML中声明DTD
<!DOCTYPE students []> students是根标签 []中写约束
混合元素类型(标签约束)
语法<!ELEMENT 标签(元素)名 (标签(元素)类型)>,
注意:ELEMENT与元素类型必须是大写
<!ELEMENT students (student)>
报错 THE content of element type "students" must match "(student)"
原因:当前声明了students里面只能出现一个student
解决方式:使用类型正则的写法定义子元素个数
当前元素中有其他元素括号中放的是子元素的标签名
多个子元素用逗号隔开,可在子元素后加个正则限制子元素的出先次数
<!ELEMENT students (student*)> (* 0~N次,?0~1次,+ 1~N次)
<!ELEMENT student (name,age,concat)>
文本元素:标签中方的是文本
<!ELEMENT name (#PCDATA)>
出现邮箱和电话号码二选一使用 或者 |
<!ELEMENT concat (tel|email)>
属性约束
<!ATTLIST 标签名 属性 特征>
例如:学生都具备一个id,必须填写且不能重复
属性特征:#REQUIRED 必须具备的属性,不能为空
注意:不能直接方数字,可以使用啊a1,a2
<!ATTLIST student sid ID #REQUIRED>
例如:学生都具备一个sex,只能为男和女 默认为男
属性类型 CDATA 字符串 (包括中文和数字)
<!ATTLIST student
sex (男|女) '男'
>引号中的男为默认值
还有一些例如
#IMPLIED 是可有可无的那种
描述关系 学生元素具备一个属性pid,指的是父元素的sid
<!ATTLIST student
sid ID #REQUIRED
sex (男|女) '男'
pid IDREF #IMPLIED
>属性类型:IDREF 指向文档中其他地方声明的id类型的值