下面都能够声明一个混合型的元素。
<!ELEMENT 喜欢的游戏 (#PCDATA| 游戏)*>
<!ELEMENT游戏 (#PCDATA| 游戏名称 |游戏类型)*>
<!ELEMENT游戏名称 (#PCDATA)>
<!ELEMENT游戏类型 (#PCDATA)>
<喜欢的游戏>是混合内容元素,可以包含字符串,也可以包含子元素<游戏>,而且可以出现多次
<游戏>也是混合内容元素,可以包含字符串,又可以包含<游戏名称>和<游戏类型>两个元素,而且这两个元素的出现 次数也比较随意
定义子元素,dtd中定义子元素有三种类型:1、有序的子元素 2、互斥的子元素 3、无序的子元素。
定义有序子元素时,dtd声明时 <!ELEMENT计算机书籍(书名,作者,价格,简要介绍)> 当编写xml文档时 必须按照dtd约束的顺序来编写xml文档对应xml文档则应这样编写;
<计算机书籍> <书名>java精讲</书名><作者>xx</作者><价格>79.00</价格><简要介绍>该书很好</简要介绍> </计算机书籍>
定义互斥的子元素, <!ELEMENT计算机书籍(书名|作者|价格|简要介绍)>这个约束的意思是计算机书籍这个元素可以包含书名、作者、价格、简要介绍子元素中其中一个不可以同时两个或多个子元素。 相应的xml文档应当这样编写:<计算机书籍><书名>java精讲</书名>(可以是书名、作者、价格、简要介绍的任意一个)</计算机书籍>
定义无序的子元素是,可以加上 * 、+ 、?标记来声明子元素出现的频率,以此来实现无序。
+: 表明子元素可以出现1次或多次
*: 表明子元素可以出现0次或多次
?: 表明子元素可以出现0次或1次
当dtd约束这样声明计算机书籍元素时 <!ELEMENT 计算机书籍(书名|作者*|价格+)> xml 文档可以这样写
<计算机书籍><书名>java精讲</书名><作者>xx1</作者><作者>xx2</作者><价格>222.00</价格><作者>xx3</作者><价格>10.00</价格></计算机书籍>