2016-05-10 6 views
1

Я пытаюсь создать действительный документ xdxf (here's the DTD). Мне удалось разобраться во всех ошибках, кроме одного, и я не могу понять, что случилось.Попытка проверить XML на DTD

Соответствующей часть

... 
<def> 
    <def> 
     <gr>n. s.</gr> 
     <deftext> 
      <tr>pronunciation</tr> 
      <dtrn>Meaning</dtrn> 
     </deftext> 
     <co>Inflected forms</co> 
     <ex> 
      <ex_orig>Examples</ex_orig> 
     </ex> 
    </def> 
    <def> 
     <gr>n. s.</gr> 
     <deftext> 
      <tr>pronunciation</tr> 
      <dtrn>Another meaning</dtrn> 
     </deftext> 
     <co>Inflected forms</co> 
     <ex> 
      <ex_orig>Examples</ex_orig> 
     </ex> 
    </def> 
</def> 
... 

ошибки я получил (в два раза, так что я предполагаю, что это для внутреннего опра, а не внешние) является:

Содержания типа элемента «Защита «должен соответствовать » (gr?, ex *, co *, sr?, etm?, categ *, (def + | deftext)) ».

В этом нет ни или один гр (ок), ни один или многие экс (ОК), ни один или многие не сотрудничают (ок), ни один или один стер, ЭТМ (нет) , ни один или несколько categ (ok) и один или несколько def или ровно один deftext (нормально как для внешней, так и для внутренней def). Я понимаю это право или есть кое-что, что я пропускаю?

ответ

2

Да, вы правы, когда вы говорите:

Это нет или один грамм (ок), ни один или много бывших (ок), ни один или много со (ок), ни один или один стер, etm (none), none or many categ (ok) и один или несколько def или точно один deftext (ok для внешнего и внутреннего def). Я понимаю это право или есть кое-что, что я пропускаю?

Но каждый раз, когда вы пишете запятую, это означает «затем» - порядок должен быть уважал.

Таким образом, документ неверен в отношении этого DTD, потому что в следующем:

<def> 
    <gr>n. s.</gr> 
    <deftext> 
     <tr>pronunciation</tr> 
     <dtrn>Another meaning</dtrn> 
    </deftext> 
    <co>Inflected forms</co> 
    <ex> 
     <ex_orig>Examples</ex_orig> 
    </ex> 
</def> 

элемент <co> и <ex> не могут появляться после <deftext>.

исправленный вариант будет:

<def> 
    <gr>n. s.</gr> 
    <ex> 
     <ex_orig>Examples</ex_orig> 
    </ex> 
    <co>Inflected forms</co> 
    <deftext> 
     <tr>pronunciation</tr> 
     <dtrn>Another meaning</dtrn> 
    </deftext> 
</def> 

с <gr>, а затем <ex>, затем <co> и <deftext> в конце.

+0

Это была проблема. Большое спасибо! – guillem

Смежные вопросы