2014-01-20 7 views
2

Я просто изучаю базы данных. Я пытаюсь написать DTD для следующего набора данных XML: http://s3.amazonaws.com/dbclass-resources/docs/countries.xmlНапишите DTD для набора данных 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

Were являются ваши определения 'ELEMENT' для' country' и 'language'? Каждый элемент вашего XML должен быть указан в записи DTEM 'ELEMENT'. –

+0

Простите мое невежество, разве у меня нет определения ELEMENT для страны? – user3216798

+0

Могли бы вы изменить то, что я сделал? Я пробовал это несколько раз уже безуспешно и чувствую, что просто увидеть его правильно поможет мне связать его с самим набором данных. – user3216798

ответ

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

+0

Hi Daniel, вы могли бы помочь с дополнительным запросом у меня о dtd's. Это для онлайн-курса, который я принимаю. Не могли бы вы обменять электронную почту на прямое сообщение? Спасибо за вашу помощь – user3216798

+0

@ user3216798 - Конечно. Моя электронная почта находится в моем профиле. –