Я хочу установить объект параметра для объявления атрибутов, общих для нескольких элементов.
Я пытаюсь сделать так, чтобы элемент "elem" имел атрибут "width CDATA" 0 ". После того, как я это сделаю, я бы использовал его для большего количества элементов.
Вот код, который я придумал:
<?xml version="1.0"?>
<!DOCTYPE example [
<!ENTITY % attrs 'width CDATA "0"'>
<!ELEMENT example (elem) >
<!ELEMENT elem (#PCDATA) >
<!ATTLIST elem %attrs; > <!-- <This errors with "no name for attribute" -->
]>
<example>
<elem width="20">Hi how are you</elem>
</example>
Код, который я использую, основан на принятом ответе на аналогичный вопрос ( Как объявить атрибуты, общие для нескольких элементов? ). Однако, когда я запускаю свой код через валидаторы XML (Exalt on SublimeText или xmlvalidation.com , он ошибается.
На сайте, указанном выше, ошибка:
The attribute name must be specified in the attribute-list declaration for element "elem1".
В Exalt ошибка:
ATTLIST: no name for Attribute at [...]
Что я понимаю, так это отсутствие имени атрибута. Но я поставил имя атрибута на объекте параметра, так как его нельзя обнаружить?
Если я заменю% attrs; с 'width CDATA "0"', он работает нормально.
Почему я получаю ошибку?