xsl:character-map¶
Определяет именованную карту символов для использования при сериализации.
Доступно в XSLT 1.0 и более поздних версиях. Доступно во всех редакциях Saxon.
- Категория: declaration
- Содержимое: (
xsl:output-character
* ) - Допустимые родительские элементы:
xsl:package
;xsl:stylesheet
;xsl:transform
Атрибуты¶
name
- eqname
- Имя карты символов, на которую можно ссылаться из атрибута
use-character-maps
вxsl:output
. use-character-maps?
- eqnames
- Карты символов могут быть собраны из других карт символов с помощью атрибута
use-character-maps
. Он содержит разделенный пробелами список имен других карт символов, которые должны быть включены в данную карту символов.
Заметки по реализации Saxon¶
Использование карт символов может быть дорогостоящим во время выполнения. В настоящее время Saxon не предпринимает специальных попыток оптимизировать их использование: если используются карты символов, то каждый выводимый символ будет просматриваться в хэш-таблице на предмет наличия строки-заменителя.
Saxon 9.8 расширяет возможности использования символьных карт, чтобы они также применялись к методу вывода JSON. Например, карта символов, которая отображает "/"
на "/"
, не позволит методу вывода JSON экранировать "/"
как "\/"
.
Подробности¶
Элемент xsl:character-map
содержит набор элементов xsl:output-character
, каждый из которых определяет выходное представление данного символа Unicode. Символ задается с помощью атрибута character
, строка, которая должна заменить этот символ при сериализации, задается с помощью атрибута string
. Оба атрибута являются обязательными.
Заменяющая строка выводится как есть, даже если она содержит специальные символы (разметку). Так, например, вы можете определить <xsl:output-character character=" " string=" "/>
для обеспечения вывода символов NBSP с использованием ссылки на сущность
.
Карты символов позволяют создавать выходные данные, которые не являются хорошо сформированным XML, и таким образом они обеспечивают замену disable-output-escaping
. Полезной техникой является использование символов в области частного использования Unicode (от xE000 до xF8FF) в качестве символов, которые, если они присутствуют в дереве результатов, будут отображены в специальные строки на выходе. Например, если вы хотите создать собственный XML-подобный формат, использующий такие теги, как <!IF>
, <!THEN>
и <!ELSE>
, то вы можете отобразить их на три символа xE000, xE001, xE002 (которые, в свою очередь, вы можете определить как сущности, чтобы они могли быть записаны символически в вашей таблице стилей или исходном документе).
Карты символов предпочтительнее, чем disable-output-escaping
, потому что они не зависят от тесного интерфейса между механизмом преобразования и сериализатором и не искажают модель данных. Специальные символы могут храниться в DOM, передаваться через интерфейс SAX или манипулироваться любым другим способом, прежде чем будут окончательно отображены сериализатором.