Что я должен сделать, чтобы сущность осталась неизменной?
Ты не можешь. Ссылки на сущности по необходимости разрешаются в их контент анализатором XML перед обработкой с помощью XSLT, поскольку они могут содержать элементы и другой контент, который должен соответствовать XPath. Мессинг с DOCTYPE не будет иметь никакого эффекта.
Однако, если вы установите <xsl:output encoding="us-ascii">
, документ после обработки должен быть сериализован в набор символов ASCII, и, таким образом, штрих-код em должен быть закодирован в —
.
XSLT 2.0 предлагает «карты символов», которые позволят вам указать, что все символы —
должны быть закодированы в —
или любой другой последовательности, но он не может различить —
, который изначально был —
в источнике и тот, который был —
. Если у вас нет XSLT 2.0, вы всегда можете попробовать взломать простую строку в выходном документе, чтобы заменить —
на —
. Это хитроумно, но все в порядке, если вы знаете, что —
будет использоваться только для текста и значений атрибутов.
Условие «должен быть оставлен как есть» обычно довольно сомнительно. Это действительно плохой анализатор HTML, который не может принимать простые символы Unicode, или в худшем случае, когда теряется информация о кодировке, он должен по крайней мере справиться с числовой ссылкой на символ.