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 или манипулироваться любым другим способом, прежде чем будут окончательно отображены сериализатором.