我刚刚学习数据库。我正在尝试为以下XML数据集编写DTD: http://s3.amazonaws.com/dbclass-resources/docs/countries.xml
此时,我尝试了一些选项但未成功。有人可以告诉我如何为上述数据集正确编写DTD(我已经粘贴了我的失败尝试)。
<!ELEMENT countries (country*)>
<!ELEMENT country (language?, city?)
<!ATTLIST country name CDATA #IMPLIED
population CDATA #IMPLIED
area CDATA #IMPLIED>
<!ATTLIST language percentage CDATA #IMPLIED
<!ELEMENT city CDATA #IMPLIED>
答案 0 :(得分:2)
我尝试了一些问题。
我注意到的第一件事是它看起来不像你知道如何正确使用发生指标。您将country
定义为(language?, city?)
,这意味着零或一个language
后跟零或一个city
。这不是数据中出现的内容。有时候没有城市/语言元素,有时会有更多。
我还注意到你没有正确地使用>
关闭一些声明(例如country
的声明)。
此外,这是无效的:
<!ELEMENT city CDATA #IMPLIED>
它看起来像元素声明和属性声明有一个孩子。 ; - )
以下是可用于参考的DTD示例:
<!ELEMENT countries (country)+>
<!ELEMENT country (city*,language*)>
<!ATTLIST country
area CDATA #REQUIRED
name CDATA #REQUIRED
population CDATA #REQUIRED>
<!ELEMENT city (name,population)>
<!ELEMENT language (#PCDATA)>
<!ATTLIST language
percentage CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT population (#PCDATA)>
这是quickref的快捷方式,可以帮助很多DTD语法:http://www.mulberrytech.com/quickref/XMLquickref.pdf