`
375809600
  • 浏览: 150139 次
  • 来自: 湖北
社区版块
存档分类
最新评论

dtd约束的使用

阅读更多

今天我给大家介绍一种xml的约束技术,dtd,这个技术在现在的程序中的框架中多见,但是在开发中通常使用schema,为了读懂框架,我们必备的知识之一。废话就不多说了,直接入门

一、一个关于产品的dtd

product.dtd

 

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT products (product+)>
<!ELEMENT product (name,price,number,description)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT number (#PCDATA)>
<!ELEMENT description (#PCDATA)>
 

 

这是一个引用了product.dtd的xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE products SYSTEM "product.dtd">
<products>
	<product>
		<name>冰箱</name>
		<price>3000</price>
		<number>20</number>
		<description>冷藏食品</description>
	</product>
	<product>
		<name>手机</name>
		<price>1999</price>
		<number>50</number>
		<description>可以通讯</description>
	</product>
</products>

 经过上面的入门,应该能掌握一点点规律了,在dtd中,有三种引用方式

分别是:

1.内部引用   示例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书架 [
	<!ELEMENT 书架 (书+)>
	<!ELEMENT 书 (书名,作者,售价)>
	<!ELEMENT 书名 (#PCDATA)>
	<!ELEMENT 作者 (#PCDATA)>
	<!ELEMENT 售价 (#PCDATA)>
]>
<书架>
	<书>
		<书名>Java就业培训教程</书名>
		<作者>张孝祥</作者>
		<售价>39.00元</售价>
	</书>

</书架>
 

2.外部引用

 

当引用的文件在本地时(外部DTD),采用如下方式:

<!DOCTYPE 文档根结点 SYSTEM "dtd文件的路径">

例如: <!DOCTYPE products SYSTEM “c:\product.dtd”>。* DTD文件路径 本地的。

 

 

3.公共dtd的引用

 

当引用的文件是一个公共的文件时(公共DTD)采用如下方式:

<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

 

例如:<!DOCTYPE web-app PUBLIC 

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

二、dtd中的元素定义


 细心可以发现,这个+号,我们常用,用+类比,其他的元素的用法

三、属性:
属性声明举例



 
<!ATTLIST 商品
类别 CDATA #REQUIRED 必须的
颜色 CDATA #IMPLIED  可选的
>
示例:<?xml version="1.0" encoding="UTF-8"?>
<!-- 内部DTD -->
<!DOCTYPE products [
	<!ELEMENT products (product+)>
	<!ELEMENT product (name,price,number,description)>
	<!ELEMENT name (#PCDATA) >
	<!ELEMENT price (#PCDATA) >
	<!ELEMENT number EMPTY >
	<!ELEMENT description (#PCDATA) >
	
	<!ATTLIST product id ID #REQUIRED>
]>
<products>
	<product id="p001">
		<name>冰箱</name>
		<price>3000</price>
		<number></number>
		<description>冷藏食品</description>
	</product>
	<product id="p002">
		<name>手机</name>
		<price>1999</price>
		<number />
		<description>可以通讯</description>
	</product>
</products>
 
数据类型:

 
<!ATTLIST 商品
类别 CDATA #REQUIRED 必须的
颜色 CDATA #IMPLIED  可选的
>
四、实体(ENTITY)定义
实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。
在DTD定义中,一条<!ENTITY …>语句用于定义一个实体。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 教师的company 都一样,将重复部分抽取出来 定义实体 -->
<!DOCTYPE teachers [
	<!ELEMENT teachers (teacher+)>
	<!ELEMENT teacher (name,company)>
	<!ELEMENT name (#PCDATA) >
	<!ELEMENT company (#PCDATA)>
	
	<!ENTITY cmy "传智播客2012" >
]>
<teachers>
	<teacher>
		<name>老王</name>
		<company>&cmy;</company>
	</teacher>
	<teacher>
		<name>老李</name>
		<company>&cmy;</company>
	</teacher>
	<teacher>
		<name>老赵</name>
		<company>&cmy;</company>
	</teacher>
</teachers>
 
五、约束的四种形式


 

 

 

  • 大小: 73.4 KB
  • 大小: 55.7 KB
  • 大小: 18.1 KB
  • 大小: 140.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics