2014-01-11 4 views
0

Мне предоставлен XML-файл, и я могу написать DTD для набора данных.Какое правильное форматирование DTD, когда элемент может содержать PCDATA и другой ELEMENT

Это фрагмент части, с которой я борюсь.

<Course Number="CS124" Prerequisites="CS107 CS109" Instructors="DJ" Enrollment="60"> 
    <Title>From Languages to Information</Title> 
    <Description> 
    Natural language processing. Cross-listed as 
    <Courseref Number="LING180"/> 
    . 
    </Description> 
</Course> 
<Course Number="CS143" Prerequisites="CS107" Instructors="AA" Enrollment="90"> 
    <Title>Compilers</Title> 
    <Description> 
    Principles and practices for design and implementation of compilers and interpreters. 
    </Description> 
</Course> 

Что такое правильный способ сделать DTD соответствовать XML, когда есть PCDATA в элементе, но и необязательно другой ЭЛЕМЕНТ? (См ELEMENT описание)

Я думал, что-то, как это будет работать:

<!ELEMENT Description ((#PCDATA | Courseref)*)> 

Но тогда я получаю ошибку синтаксического анализа:

ContentDecl : Name or '(' expected

Что такое правильный способ выписать DTD для этот XML должен быть действительным?

+0

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

+0

О, и из любопытства, почему вы все еще используете DTD? –

+0

Это для курса по базам данных. – RoarG

ответ

1

Вы слишком много скобок:

<!ELEMENT Description (#PCDATA | Courseref)*> 
+0

Это все равно будет работать? Элемент имеет PCDATA и CourseRef. Не уверен, что я пойду, чтобы избежать всей ситуации. –

+1

Да, это сработает. В этом заявлении говорится, что элемент 'Description' может содержать любое число (' (...) * ') дочерних элементов' # PCDATA' и 'Courseref' в любом порядке. Нередко можно видеть элементы внутри текста. Например, подумайте о форматированных комментариях XML в коде. Или в этом случае, возможно, просмотр курса, где элементы «Courseref» заменяются ссылками, когда они представлены пользователю в пользовательском интерфейсе. –

+0

Привет, надеюсь, мне это никогда не понадобится, но на всякий случай. Всегда был большим поклонником маркировки вещей, которые я хочу разметить. –

0
<!ELEMENT Courseref EMPTY> 
<!ATTLIST Courseref Number CDATA #IMPLIED> 

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

  • Нет связанных вопросов^_^