J2ee基础xml介绍和DTD约束

学习目标:


熟练使用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类型的值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值