Символы, о которых вы спрашиваете, представляются в кодировке символов документа, о которой вы спрашиваете.Таким образом, вам не нужно использовать числовые ссылки на сущности символов.
XSLT кажется излишним для изменения кодировки символов документа.Вам необходимо прочитать исходный XML-файл и снова записать его с другой кодировкой символов документа.Это приведет к тому, что кодовые точки Unicode, которые не могут быть представлены в выбранной вами кодировке символов, будут сериализованы в виде числовых ссылок на сущности символов.Никакой XSLT не требуется, и вам придется все это делать для XSLT.Таким образом, вы можете пропустить шаг XSLT.
Тем не менее, если у вас есть инструмент, который читает файл XML, применяет преобразование и снова записывает его, соблюдая атрибут кодировки xsl: output, то вы можете использовать Identity Transform с соответствующим выходным элементом:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="XML" encoding="Windows-1252" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Если вы сделаете это в своем примере документа, вы увидите, что «знак евро 128» действительно закодирован в Windows-1252,
31 32 38 20 80 20 65 75 72 6F 20 73 69 67
Если вы хотите, чтобы € был представлен в виде числовой символьной ссылки на объект, закодируйте с помощью кодировки символов документа для набора символов, который его не поддерживает, например, IBM437.
Неясно, зачем вам нужна кодировка символов документа, отличная от UTF-8.Процессор XML не может продвинуться очень далеко, если он не поддерживает набор символов для XML, который является Unicode.