XML(二):xml的约束

1. 为什么需要xml约束?

举个例子,我现在定义了一个person的文件来保存人的相关信息,比如name age 等,但是如果在这个文件中写了一个标签<猫>,虽然这个是可以正常显示,但是这个并不是人的信息,由于标签是自定义的,所以我们需要技术来约束xml中出现的元素。

2.两种约束:DTD约束和schema约束

2.1 DTD约束:(一般使用步骤如下)
  1)创建一个.dtd 文件
  2)看xml中有几个元素(标签),在dtd文件中就写几个<!ELEMENT>
  3)  判断元素是复杂元素(有子元素)还是简单元素(无子元素):
       - 复杂元素:<!ELEMENT 元素名称 (子元素)>
       - 简单元素:<!ELEMENT 元素名称 (#PCDATA)>
  4)需要在xml中引入改dtd文件,
      <!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">

注意:如果直接使用浏览器打开xml文件,浏览器只是校验xml的语法,并不会校验约束。我们需要用到一些IDE开发工具(eclipse/myeclipse/idea)等

2.2 DTD引入方式有三种:
1)引入外部的DTD文件
     <!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
2)使用内部的dtd文件
     <!DOCTYPE 根元素名称  [
             <!ELEMENT person (name,age)>
			<!ELEMENT name (#PCDATA)>
			<!ELEMENT age (#PCDATA)>
			<!ATTLIST name
			  id CDATA #REQUIRED
			>
    ]>
  1. 使用外部的dtd文件(即网络上的dtd文件)
 <!DOCTYPE 根元素名称 PUBLIC   "dtd名称"  "DTD文档的url">
2.3 DTD定义属性
<!ATTLIST name
  id CDATA #REQUIRED
>
  • 定义:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束 >
  • 属性类型:
类型符号
字符串CDATA
枚举(例1|例2|例3)
字母或下划线开头,不能有空格ID
  • 属性的约束
约束符号
必填#REQUIRED
可有可无#IMPLIED
固定值#FIXED
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person [
  <!ELEMENT person (name*,age+,birthday*)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!ELEMENT birthday (#PCDATA)>
  <!ATTLIST name
    id CDATA #IMPLIED 
    style ID #IMPLIED 
    color (red|greed) #REQUIRED
    width CDATA #FIXED '90'
   >
  <!ATTLIST age
    id2 CDATA #REQUIRED >
]>
<person>
<name id="1" color="red" style="heigh:30px" width="90">张三</name>
<age id2="zs">30</age>

</person>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值