使用固定,必需,隐含等属性创建DTD(文档类型定义)文件

时间:2013-11-21 04:41:47

标签: xml dtd xml-dtd dtd-parsing

我们只在课堂上谈论DTD和XML 2天,我有这个任务不确定我是做得对还是做了所有问题。至少我试试,任何帮助将不胜感激!!

分配 您被要求代表机场数据,其中机场需要属性名称和位置;和一个隐含的属性famous_assoiciation。 famous_assoication属性是机场被命名的着名人物的名称。机场由一个或多个衣架组成。每个衣架都有一个数字,位置和一组0或更多相关航空公司。每个衣架还有一个固定的属性,长度为2英里。航空公司有一个名称,一种或多种类型的飞机机队(其中一个机队包含一架或多架飞机)。飞机有制造商,型号,vin和seat_capacity。平面还具有属性颜色,默认值为“silver”

您可以假设此系统中的所有数据都是CDATA类型

这就是我做的......

<?xml version = "1.0" encoding ="utf-8"?>

<!ELEMENT airport (hanger+)>
 <!ELEMENT hanger (number, location, airline*)>
 <!ELEMENT number (#PCDATA)>
 <!ELEMENT location (#PCDATA)>
 <!ELEMENT airline (name, aircraft fleets+)>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT aircraft fleets (plane+)>
 <!ELEMENT plane (manufacturer, model, vin, seat_capacity)>
 <!ELEMENT manufacturer (#PCDATA)>
 <!ELEMENT model (#PCDATA)>
 <!ELEMENT vin (#PCDATA)>
 <!ELEMENT seat_capacity (#PCDATA)>


 <!ATTLIST airport name CDATA #REQUIRED>
 <!ATTLIST airport location CDATA #REQUIRED>
 <!ATTLIST airport famous_assoiciation CDATA #IMPLIED>
 <!ATTLIST plane color CDATA #FIXED "silver">
 <!ATTLIST hanger length CDATA #FIXED "2 miles">

1 个答案:

答案 0 :(得分:2)

你的DTD看起来很不错。我只看到一些东西。


元素名称中不能包含空格,因此您必须更改aircraft fleets。您无法将其缩短为fleet


为了便于阅读,最好将属性声明(ATTLIST)放在元素声明下,这样很容易找到。每个元素也只需要一个ATTLIST。您可以添加换行符和制表符/空格,以便于阅读...

<!ELEMENT airport (hanger+)>
<!ATTLIST airport 
          name                CDATA #REQUIRED
          location            CDATA #REQUIRED
          famous_assoiciation CDATA #IMPLIED   >

color属性应该具有默认值“silver”,但您将其作为固定值。只需删除#FIXED ...

即可
<!ATTLIST plane color CDATA "silver">