XML中的DTD语法
Posted H.U.C-王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML中的DTD语法相关的知识,希望对你有一定的参考价值。
DTD(Document Type Definition),全称为文档类型定义。
XML元素定义
语法如下:
<!ELEMENT 元素名称 元素类型> //定义元素的类型,但是只能是 ANY(表示任意类型)或EMPTY(空元素);
<!ELEMENT 元素名称 (元素内容)> //定义元素的内容,一定要加上();
对于元素内容,
----可以定义子元素的名称,比如:
<!ELEMENT 元素名称 (子元素1,子元素2,子元素3)> 表示3个子元素只能出现一次,并且按照此顺序出现;
<!ELEMENT 元素名称 (子元素1|子元素2|子元素3)> 表示3个子元素中只能出现一个;
我们还可以定义子元素的个数,比如:
(1)+:1次或多次;比如 (name+)表示此name元素只能出现1次或多次。
(2)?:0次或1次;比如(name?)表示此name元素只能出现0次或1次。
(3)*:0次或多次;比如(name*)表示此name元素任意出现几次。
(4)无:只能一次;比如(name)表示此name元素只能出现1次。
对于元素内容,
----也可以定义子元素内容的类型,比如#PCDATA,表示字符串;
XML属性定义
<!ATTLIST 标签名
属性名1 属性类型 属性说明
属性名2 属性类型 属性说明
>
属性类型可以是
(1)CDATA:最普通的字符串;
(2)枚举,即(值1|值2|值3),需要括号
(3)ID:属性值需要以字母或下划线开头;
属性说明可以是:
(1)#REQUIRED:必须设置;
(2)#IMPLED:可选值,即此属性可以设置,也可以不设置;
(3)#FIXED:固定值,通常语法为:#FIXED "固定值"
(4)默认值;
XML实体定义
实体类似于一个可重用常量,或者说是ant中的classpath,可以被引用;
语法如下:
<!ENTITY 实体名称 "实体内容">
引用实体语法:
&实体名称; 注意:最后的“;”一定需要;
注意:引用实体必须在XML中引用;
实例代码:
<!DOCTYPE TreeRoot[ <!ELEMENT TabDesc (TabNode*)> <!ATTLIST TabDesc desc CDATA #REQUIRED dutyType CDATA #REQUIRED> <!ELEMENT TabNode (Parameter*,ExtendParameter?)> <!ATTLIST TabNode id ID #REQUIRED desc CDATA #IMPLIED winName CDATA #IMPLIED dutyType CDATA #REQUIRED img CDATA #REQUIRED closeable CDATA #REQUIRED activate CDATA #REQUIRED position CDATA #REQUIRED extend CDATA #REQUIRED> <!ELEMENT Parameter (#PCDATA)> <!ATTLIST Parameter name CDATA #REQUIRED value CDATA #REQUIRED> <!ELEMENT ExtendParameter (#PCDATA)> <!ATTLIST ExtendParameter name CDATA #REQUIRED getListMethod CDATA #REQUIRED listMethodParameter CDATA #REQUIRED class CDATA #REQUIRED getSnMethod CDATA #REQUIRED getDescMethod CDATA #REQUIRED> ]>
根据XML自动生成DTD
因为一般我们写的XML基本都是没有DTD的,如果要自己写DTD,又很麻烦,因此我们可以通过工具来自动生成:trang
功能:能够完成如下转换:
(1)XML ---> DTD
(2)XML --->XSchema
(3)DTD--->XSchema
使用方法:
java -jar trang.jar -I xml -O dtd input.xml output.dtd 即可;
-I xml 表示输入为xml;
-O dtd表示输出为dtd文件;
input.xml表示输入文件;
output.dtd表示输出文件;
以上是关于XML中的DTD语法的主要内容,如果未能解决你的问题,请参考以下文章