Это невозможно в (разумном) XSLT.Вы можете обойти это.
- Ваше решение с
concat
недопустимо: XSLT - это не просто причудливый конкатенатор строк, он действительно преобразует концептуальное дерево .Закодированный символ, такой как 
, представляет собой один символ - если бы вы каким-то образом включили буквы &
#
x
f
0
a
7
;
, тогда процессор XSLTвключить эти буквы в XML data , а не в строку!Таким образом, это означает, что он избежит их. - В XSLT 1.0 нет функции, которая позволяла бы преобразовывать число в символ с этой кодовой точкой.
- В XSLT 2.0, как указывает Майкл Кей, выможно использовать
codepoints-to-string()
для достижения этой цели.
Существует два решения.Во-первых, вы можете использовать disable-output-escaping
.Это довольно неприятно и не переносимо .Избегайте этого любой ценой, если можете - но, вероятно, он будет работать в вашем трансформаторе, и это, вероятно, единственное общее простое решение, поэтому вы, возможно, не сможете этого избежать.
Вторым решением будетЖесткий код соответствует для каждого отдельного символа.Обычно это беспорядок, но вполне возможно, если вы имеете дело с ограниченным набором возможностей - это зависит от вашей конкретной проблемы.
Наконец, я бы порекомендовал не решить эту проблему вXSLT - это обычно то, что вы можете сделать в предварительной / последующей обработке в другой среде программирования более подходящим образом.Скорее всего, у вас есть представление XML-документа в памяти, чтобы вы могли использовать XSLT, в этом случае это даже не займет много процессорного времени.