DTD Element: альтернатива между текстом и элементом

Я хочу определить dtd для моего XML-документа.

В этом dtd у меня есть элемент под названием

p

, p может содержать либо #PCDATA, либо другой элемент (img). Как я могу объявить это? Я попробовал это:

<!ELEMENT p (#PCDATA | img)>
<!ELEMENT img EMPTY>

Но это не работает. Ошибка ответа: Ошибка: '>' - неожиданный токен. Ожидаемый токен - "*". Когда я пытаюсь это:

<!ELEMENT p ((#PCDATA) | img)>
<!ELEMENT img EMPTY>

произошла ошибка: Ошибка: имя не может начинаться с символа "#", шестнадцатеричное значение 0x23.

Как я могу добиться, чтобы p содержал текст или другой элемент img? Необходимо, чтобы оба варианта работали. Один из двух вариантов должен быть реализован.

<p>some text</p>

а также

<p><img src='...' /></p>

Привет!

1 ответ

Решение

Модели со смешанным содержимым должны иметь ограничение на вхождение нуля или более.

<!ELEMENT p (#PCDATA | img)*>
Другие вопросы по тегам