2014-09-14 3 views
0

Я в классе XML, и мое назначение - создать генеалогическое древо. Я довольно много закончил документ и смог выяснить и исправить отображаемые ошибки.Ошибка XML Element

Я застрял в текущей ошибке «Содержимое типа элемента« Ребенок »должно совпадать» (firstName, middleName, surname, maidenName, suffix) ». Для строк 44,57 и 63. Наверное, я не понять, почему я получаю ошибку, она смотрит на меня, как я сделал все правильно

Вот что у меня есть:

<?xml version="1.0"?> 
<!DOCTYPE Family [ 
    <!ELEMENT Family (Father, Mother, Offspring)> 

    <!ELEMENT Father (firstName, middleName, surname)> 
    <!ELEMENT firstName (#PCDATA)> 
    <!ELEMENT middleName (#PCDATA)> 
    <!ELEMENT surname (#PCDATA)> 

    <!ELEMENT Mother (firstName, middleName, surname, maidenName)> 
    <!ELEMENT maidenName (#PCDATA)> 

    <!ELEMENT Offspring (Child)> 

    <!ELEMENT Child (firstName, middleName, surname, maidenName, suffix)> 
    <!ATTLIST Child 
    ID CDATA #REQUIRED 
    gender (Male | Female) "Female" 
    birthPlace CDATA #IMPLIED 
    birthYear CDATA #IMPLIED> 

    <!ELEMENT suffix (#PCDATA)> 
]> 


<Family> 
    <Father> 
     <firstName>William</firstName> 
     <middleName>Fitzgerald</middleName> 
     <surname>Buckley</surname>   
    </Father> 
    <Mother> 
     <firstName>Ella</firstName> 
     <middleName>Ann</middleName> 
     <surname>Buckley</surname> 
     <maidenName>Fitzgerald</maidenName> 
    </Mother> 
    <Offspring> 
     <Child ID="01" gender="Male"> 
      <firstName>Gordon</firstName> 
      <middleName>Shumway</middleName> 
      <surname>Buckley</surname> 
      <suffix></suffix> 
     </Child>   
     <Child ID="02"> 
      <firstName>Alice</firstName> 
      <middleName>Mae</middleName> 
      <surname>Nelson</surname> 
      <maidenName>Buckley</maidenName> 
      <suffix></suffix> 
     </Child> 
     <Child ID="03" gender="Male"> 
      <firstName>Julius</firstName> 
      <middleName>Caesar</middleName> 
      <surname>Buckley</surname> 
      <suffix></suffix> 
     </Child> 
     <Child ID="04" gender="Male"> 
      <firstName>Martin</firstName> 
      <middleName>Lawrence</middleName> 
      <surname>Buckley</surname> 
      <suffix></suffix> 
     </Child> 
    </Offspring> 
</Family> 

заранее спасибо за помощь

.! Kris

ответ

0

Вы сказали, что это:

<!ELEMENT Child (firstName, middleName, surname, maidenName, suffix)> 

Но позже вы это сказали:

<Child ID="01" gender="Male"> 
    <firstName>Gordon</firstName> 
    <middleName>Shumway</middleName> 
    <surname>Buckley</surname> 
    <suffix></suffix> 
</Child> 

Этот ребенок не имеет maidenName, что вы сказали, он должен иметь.

Попробуйте положить

<maidenName></maidenName> 

в ребенке, как вы сделали с суффиксом ... в зависимости от приложения, разбор это, что может работать.

1

ОТД утверждает, что все элементы Child требует firstName, middleName, surname, maidenName и suffix.

<!ELEMENT Child (firstName, middleName, surname, maidenName, suffix)> 

Однако у вас есть несколько Child элементов, которые не имеют maidenName.

<Child ID="01" gender="Male"> 
    <firstName>Gordon</firstName> 
    <middleName>Shumway</middleName> 
    <surname>Buckley</surname> 
    <suffix></suffix> 
</Child>   
<Child ID="03" gender="Male"> 
    <firstName>Julius</firstName> 
    <middleName>Caesar</middleName> 
    <surname>Buckley</surname> 
    <suffix></suffix> 
</Child> 
<Child ID="04" gender="Male"> 
    <firstName>Martin</firstName> 
    <middleName>Lawrence</middleName> 
    <surname>Buckley</surname> 
    <suffix></suffix> 
</Child> 

Возможно, вы имели в виду maidenName optional?

<!ELEMENT Child (firstName, middleName, surname, maidenName?, suffix)> 
Смежные вопросы