为XML数据集编写DTD(初学者)

时间:2014-01-20 21:22:01

标签: xml dtd xml-dtd

我刚刚学习数据库。我正在尝试为以下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>

1 个答案:

答案 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