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 "& 大家好">
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"/>
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 "& 大家好">
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"/>