现在的位置: 首页 > 综合 > 正文

xml dtd详解

2018年03月29日 ⁄ 综合 ⁄ 共 1997字 ⁄ 字号 评论关闭
author:corey
description:about xml dtd
url:http://blog.csdn.net/turkeyzhou
email:coreymylife@163.com

<!--系统关联-->
<!DOCTYPE SYSTEM"dtd_path">

<!--public关联--><!DOCTYPE PUBLIC"-//ISO认证/单位说明/DTD说明/所用语言" "DTD_URL">
如:<!DOCTYPE PUBLIC"-//IS123456/corey/forxml/en""my.dtd">

DTD中的ELEMENT
<!--这个元素下面仅包含子元素-->
<!ELEMENT el_name(sub_nam1,sub_name2)>
<!--中间不能包含一些<>"/这样的符号,必须是已经解析的字符串-->
<!ELEMENT el_name(#PCDATA)>

<!--对元素子元素进行约束-->
<!ELEMENT el_name (sub_name?|*|+)><!--其中?表示0-1,*表示>=0,+表示>=1-->

<!--表示在两者之间选择子元素-->
<!ELEMENT el_name (sub_name|sub_name)>
<!ELEMENT el_name(#PCDATA|sub_name1|subname2)*)
<!--以上表示在父元素下面可以同时出现pcdata文本和子元素-->

<!ELEMTN el_name EMPTY>
<!--为空-->

<!ELEMENT el_nameANY>
<!--可以是任意的-->

DTD中的属性
<!ATTLIST el_name          attribute_name attribute_type attribute_default>
如:<!ATTLIST桌子          width CDATA '0'   >

属性默认约束:
1)字符串:该元素必须有属性,而且有默认值

2)#IMPLIED:该元素可以没有属性

3)#REQURIED:该元素必须有属性,没有默认值

4)#FIXED 字符串 该元素可以没有属性值,但是有就是固定的默认值

属性的类型:
1)CDATA:任意的字符串,不包含<>"/,可以用字符引用或者实体引用 &amp等

2)enumerated :  
 如:<!ATTLIST el_name           sex('男'|'女') #REQUIRED       >

3)NMTOKEN:属性值中不能含有空字符串

4)NMTOKENS:
如果属性值中含有空字符,而且被空白分离开的字符串符合NMTOKEN  那么选择使用NMTOKENS
 如:   <!ATTLISTel_name             att_name NMTOKENS #REQUIRED>
 xml:   <el_nameatt_name="xmlsoap"></el_name>5)ID:不允许其他类型相同的属性使用这个属性值5)IDREF:引用已有的ID属性的值

6)IDREFS:引用已有的ID属性的值,并且用空格分开
<图书 ISBN="123"/>
<图书 ISBN="124"/>
<作者 曾编图书="123 124"/>

DTD中的实体
<!ENTITY 实体的引用 “实体的内容”>

如:DTD:
<!ENTITY hello "&amp 大家好">

   XML:
<el>&hello</el>

外部实体:
外部实体是指实体的内容是DTD文件意外的其他文件
<!ENTITY 实体的引用 SYSTEM "实体的url">
例如:
<!ENTITY java SYSTEM "a.java">

&java就是至大a.java文件中的内容

<!ENTITY jsp PUBLIC "-//ISO123456/me/ok/en" "http://log.csdn.net/turkeyzhou">

DTD的参数实体
上文中我们说到的实体是在DTD中定义,然后在与之关联的XML中引用
现在我们所说的参数实体是在DTD中定义,然后在DTD中引用

DTD:
<!ELEMENT 标记 "(生产日期|数量|)">

<!ELEMTN 电视机 %标记;>
将转换为 
<!ELEMENT 电视机 (生产日期|数量)>

内部DTD引用

<!DOCTYPE root_name [
 <!ELEMENT el_name (.....)
  .........
  ]>

在DTD中生命名称空间
DTD:
<!ATTLIST P:el xmlns:P CDATA #REQUIRED>

xml:
<P:elxmlns:P="http://blog.csdn.net/turkeyzhou"/>

或者
DTD:
<ATTLIST P;el xmlns:P CDTAT #FIXED "http://blog.csdn.net/turkeyzhou">

xml:
<P;el xmlns:P="http://blog.csdn.net/turkeyzhou"/>

抱歉!评论已关闭.