Обработка символов-разделителей
Обработка символов-разделителей
Поначалу символы-разделители (whitespace) доставляют авторам XSLT много хлопот. В главе 2 объяснялось, что «чистые» узлы-разделители — это текстовые узлы, содержащие только символы-разделители (пробелы, возвраты каретки, переводы строки и символы табуляции). Эти узлы по умолчанию копируются из исходного документа.
Заметьте, что в таблице стилей также могут быть узлы-разделители:
<xsl:template match="PLANETS">
<xsl:copy>
<xsl:apply-templates select="PLANET"/>
</xsl:copy>
</xsl:template>
В нашем случае пробелы используются для выравнивания элементов таблицы стилей, а возвраты каретки — для разрежения кода. Чистые узлы-разделители, такие, как этот, не копируются из таблицы стилей в выходной документ. Заметьте, однако, что разделитель из следующего элемента <TITLE> копируется в выходной документ, так как это не чистый узел-разделитель (он также содержит текст «The Planets Table»):
<xsl:template match="/PLANETS">
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
.
.
.
Если вы хотите убрать этот разделитель и сохранить выравнивание, можно использовать пустые элементы <xsl:text>, так чтобы символы-разделители стали чистыми узлами-разделителями:
<xsl:template match="/PLANETS">
<HTML>
<HEAD>
<TITLE>
<xsl:text/>The Planets Table<xsl:text/>
</TITLE>
.
.
.
Чистые узлы-разделители не копируются из таблицы стилей в выходной документ, если только они не находятся внутри элемента <xsl:text>, или у элемента, в который они вложены, атрибут xml:space не установлен в «preserve» (сохранить).
С другой стороны, по умолчанию XSLT сохраняет текстовые узлы разделители в исходном документе и копирует их в результирующий документ. Возьмите уже рассмотренную нами копирующую таблицу стилей, которая копирует все элементы из исходного документа в результирующий:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
и примените ее к planets.xml; все символы-разделители будут также скопированы в результирующий документ:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS>
<PLANET>
<NAME>Mercury</NAME>
<MASS UNITS="(Earth = 1)">.0553</MASS>
<DAY UNITS="days">58.65</DAY>
<RADIUS UNITS="miles">1516</RADIUS>
<DENSITY UNITS="(Earth = 1)>.983</DENSITY>
<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->
</PLANET>
.
.
.
Тем не менее, иногда требуется удалить разделители, используемые при форматировании входных документов — это можно сделать при помощи элемента <xsl:strip-space>.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Обработка отдельных символов: <fo:character>
Обработка отдельных символов: <fo:character> Как можно догадаться по имени, объект <fo:character> позволяет работать с отдельными символами в документе. Одна из областей применения <fo:character> — случай, когда нужно заменить определенные символы на другие. В следующем примере я
Изучаем мир тви-символов
Изучаем мир тви-символов С. Кара-Мурза в своей книге «Демонтаж народа» описывает мир символов. Он говорит, что «мир символов упорядочивает историю, связывает в нашей коллективной жизни прошлое, настоящее и будущее». Действительно, символы значат для нас чрезвычайно
Вставка символов
Вставка символов При работе с текстом нам часто будет требоваться использовать какой-нибудь специальный символ. Причем это касается не только малоупотребимых символов, которые можно вызвать с помощью Таблицы символов, но и особых знаков, используемых программой Adobe
Настройки символов
Настройки символов Для изменения настроек символов мы будем пользоваться палитрой Character (Символы) (рис. 13.1) и панелью управления (рис. 13.2) в режиме работы с текстом (возможно, ее придется переключить в режим отображения настроек символов с помощью кнопок в левой части
Стили символов
Стили символов Созданием, управлением и использованием стилей символов занимается палитра Character Styles (Стили символов) (рис. 17.1). В начале работы она пуста, в ней присутствует только строка [None] (Нет стиля). Рис. 17.1. Палитра Character Styles (Стили символов) и ее менюНачать работу с уже
5.6. Вставка разделителей при форматировании чисел
5.6. Вставка разделителей при форматировании чисел Возможно, есть и более удачные способы достичь цели, но приведенный ниже код работает. Мы инвертируем строку, чтобы было удобнее выполнять глобальную замену, а в конце инвертируем ее еще раз:def commas(x)str =
Определение класса символов и преобразование символов
Определение класса символов и преобразование символов Функция Краткое описание isalnum проверка на букву или цифру isalpha проверка на букву isascii проверка на символ из набора кодировки ASCII iscntrl проверка на управляющий символ isdigit проверка на десятичную
Обработка пробельных символов
Обработка пробельных символов В XSLT выделяются четыре пробельных символа, обработка которых несколько отличается от обработки других символов. Их Unicode-коды и описания сведены в табл. 8.1.Таблица 8.1. Unicode-коды пробельных
8.6.4 Массивы Символов
8.6.4 Массивы Символов Массив char можно инициализировать строкой. Последовтельные символы строки инициализируют члены массива. Напрмер:char msg[] = «Syntax error on line %d »;демонстрирует массив символов, члены которого инициалзированы строкой. Обратите внимание, что
23.1.4. Регистр символов
23.1.4. Регистр символов Чаще всего причиной ошибки является неверное использование регистра при работе с переменными. Например, при присваивании переменной применяется верхний регистр, а при ссылке на нее — нижний. Тогда не следует удивляться тому, что присваивания