Почему это не действительный XML DTD? (Объект параметра и #PCDATA)
-
25-09-2019 - |
Вопрос
Использование валидатора 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-бесконечности, т. Е. Звездочка требуется.