Почему это не действительный XML DTD? (Объект параметра и #PCDATA)

StackOverflow https://stackoverflow.com/questions/2803142

Вопрос

Использование валидатора DTD здесь, Мне сообщают, что следующий DTD недействителен.

<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H         (%text;)+>
<!ELEMENT L         (#PCDATA)>

Сообщение об ошибке: «A '(« символ »или тип элемента требуется в объявлении типа элемента« H ». В строке 2 столбец 22.

Может кто-нибудь, пожалуйста, укажите, почему он недействителен? И как я могу сделать это действительным? Сообщение об ошибке не совсем удобно для меня. Спасибо.

Это было полезно?

Решение

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

<!ELEMENT H         ((#PCDATA|L)*)+>

когда сущность расширена. Единственная разрешенная форма для элементов со смешанным контентом

(#PCDATA | A | B | C)*

Где A, B и C возможны дочерние элементы. #PCDATA должен Будьте первым выбором, и множество должно быть разрешено повторять времена 0-бесконечности, т. Е. Звездочка требуется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top