Применение сущностей во включенных документах XSLT вызывает ошибку

У меня есть таблица стилей XSL с определением сущности в ней:

<!DOCTYPE xsl:stylesheet SYSTEM "entities.dtd">

entity.dtd содержит только одно определение:

<!ENTITY copy "&#169;">

Если я использую в документе объявление DOCTYPE, все работает нормально. Но когда я включаю другой XSL-документ и пытаюсь использовать там сущность, XSLT-процессор говорит, что сущность «копировать» не определена.

Как определить глобальное DTD, чтобы использовать его во всех включенных таблицах стилей XSL?


person Rodion Baskakov    schedule 14.07.2012    source источник
comment
Re: [Как я могу определить глобальный DTD, чтобы использовать его в любой включенной таблице стилей XSL?] Вы не можете. Каждая таблица стилей xslt представляет собой отдельный XML-документ, и любой XML-документ, не содержащий DTD, определяющий используемые сущности, имеет неверный формат.   -  person Dimitre Novatchev    schedule 14.07.2012


Ответы (1)


Каждый модуль в вашей таблице стилей является автономным XML-документом и передается анализатору XML независимо от других модулей. Следовательно, он должен быть правильно сформирован, а это означает, что он должен определять в своем DTD любые сущности, которые он использует.

person Michael Kay    schedule 14.07.2012