Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Метод вывода "html"
В нынешнем состоянии языки XML и HTML сильно похожи синтаксически, но при этом имеют некоторые довольно весомые различия. Метод вывода "html"
используется для того, чтобы выводить документы в формате, который будет понятен большинству существующих на данный момент Web-браузеров.
Одно из основных различий HTML и XML состоит в том, что в XML пустые элементы имеют формат < имя />
, в то время как в HTML тот же элемент был бы выведен, как < имя >
— без косой черты. Метод вывода "html"
учитывает эти различия и выводит теги пустых элементов HTML без косой черты после имени. В соответствии с технической рекомендацией языка HTML 4.0, пустыми элементами являются area
, base
, basefont
, br
, col
, frame
, hr
, img
, input
, isindex
, link
, meta
и param
.
I've got a simple content
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Welcome!
Be our guest!
Welcome!
Be our guest!
I've got a simple content
Как можно заметить, метод вывода "html"
распознает элементы HTML вне зависимости от регистра символов — в нашем примере пустой элемент
был выведен как
, что соответствует синтаксису HTML.
Документы, которые преобразуются в HTML, могут также иметь программы, определенные внутри элемента script
или стили, заданные внутри элемента style
. В случае если внутри этих элементов оказываются символы, считающиеся в XML специальными — такие как " <
", " &
" и так далее, процессор не должен заменять их символьными или встроенными сущностями.
Предположим, что в преобразуемом документе элемент script
определен с использованием специальных символов, которые заменены сущностями:
if (a > b) swap(a, b)
или с использованием секций символьных данных:
b) swap(a, b) ]]>
При использовании метода вывода "html"
оба варианта будут выведены, как
if (a>b) swap(a, b)
Пожалуй, стоит еще раз повторить, что это относится только к элементам style
и script
. Специальные символы, использованные в других элементах, будут заменены символьными или встроенными сущностями.
This >o< is a black hole of this page!
будет выведено как
This >o< is a black hole of this page!
В соответствии со спецификацией, некоторые атрибуты в HTML могут и не иметь значений — как правило, это атрибуты с булевыми значениями, такие, к примеру, как атрибут selected
элемента option
, присутствие которого в элементе означает то, что опция выбрана, отсутствие — то, что она не выбрана. Для того чтобы получить в выходящем документе
следует в преобразовании указывать
то есть присваивать булевому атрибуту значение, равное собственному имени. Такие значения будут выведены в минимизированной форме, как это и требовалось.
HTML и XML также имеют небольшие различия в формате вывода инструкций по обработке. В то время как в XML эти инструкции имеют вид
в HTML инструкции по обработке заканчиваются не " ?>
", а просто правой угловой скобкой (" >
"):
а при использовании метода HTML
My heart is not here
одним и тем же шаблоном:
при использовании метода вывода "xml"
будет преобразован к виду
My heart's in the Highlands
My heart is not here
а при использовании метода "text"
к виду
My heart's in the Highlands
My heart is not here
Атрибут encoding
указывает на предпочтительную кодировку вывода текста документа. Значение атрибута encoding
по умолчанию зависит от программной платформы, на которой производится преобразование. В большинстве процессоров по умолчанию используются кодировки UTF-8, ASCII и ISO-8859-1.
В случае если кодировка, используемая для вывода текста, не отображает некоторые символы документа, процессор может выдать ошибку.
По умолчанию в качестве значения атрибута media-type
, используемого для простого текста, указывается "text/plain"
. Значение атрибута media-type
может быть использовано сервером, преобразующим документ в качестве MIME-типа.
Другие методы вывода
Как уже было сказано раньше, спецификация XSLT позволяет помимо основных методов "xml"
, "html"
и "text"
использовать также и другие методы, реализация которых будет зависеть от производителя того или иного процессора. Кажется вполне логичной и закономерной возможность использования, к примеру, такого метода, как "pdf"
для создания документов в Adobe Portable Document Format (переносимом формате документов) или метода "bin"
для создания двоичного потока данных. Однако, на данном этапе, процесс сериализации (создания физической сущности из логической модели) пока еще не определен в общем виде для произвольного метода. Возможно, в будущем, по аналогии с объектной моделью документа (DOM) будут созданы схожие интерфейсы для более легкого определения методов сериализации и интеграции преобразований в другие программы, но в настоящее время следует ограничиваться тремя основными методами.
Отметим также, что спецификация языка XSLT определяет функциональность элемента xsl:output
как возможную, но не обязательную. Процессоры обязаны манипулировать логическими моделями XML-документов, но при этом они не обязаны поддерживать сериализацию и уметь выводить преобразованный XML-документ как последовательность байт. Конечно же, абсолютное большинство процессоров поддерживает такую возможность, но при всем том она остается не более чем возможностью.
Поэтому из соображений переносимости можно лишь только надеяться, что документ будет выведен так, как было задумано. Не следует исключать возможности, что в определённых условиях процессор не сможет контролировать процесс вывода документа.
Типичным примером такой ситуации может быть использование процессора совместно с другими компонентами, которые обмениваются с процессором документами в виде DOM-структур, но сами загружают и выводят документы. В этом примере компоненты, занимающиеся выводом преобразованного документа, могут спокойным образом игнорировать все то, что было указано в элементе xsl:output
или в атрибутах disable-output-escaping
других элементов преобразования. Более того, они даже не будут знать, что было там указано, поскольку эти значения не касаются процесса преобразования как такового — они относятся к выводу, контролировать который процессор в данном случае не может.
Интервал:
Закладка: