Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Э
Если преобразование будет использовать для вывода кодировку, которая не может отображать символы кириллического алфавита, например ISO-8859-1, то символ " Э
" в выходящем документе должен быть заменен символьной сущностью.
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
method="xml"
encoding="ISO-8859-1"
indent="yes"/>
Э
Вместе с тем синтаксис XML не разрешает использовать символьные сущности в именах элементов и атрибутов, и наличие в них символов, не отображаемых кодировкой вывода, будет являться ошибкой. Если в предыдущем примере документ будет иметь вид
<���страница>Э</страница>
то вывести результирующее дерево в кодировке ISO-8859-1 будет невозможно.
Индентацией называют форматирование исходного текста, не влияющее на семантику, но облегчающее читаемость. К примеру, один и тот же XML-документ можно написать как
<���В><���С/></В><���С><���В></В></С></А>
или
Очевидно, что второй случай гораздо легче для понимания, поскольку в нем легко можно видеть принадлежность элементов одного другому. Подобное форматирование можно использовать и при выводе преобразованного документа при помощи атрибута indent
элемента xsl:output
. Если этот атрибут имеет значение "yes"
, процессор может добавить один или несколько пробельных символов или символов перевода строки — в зависимости от реализации. Как правило, каждый дочерний элемент помещают на новой строке, добавляя впереди два пробела на каждый уровень вложенности.
</В>
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Следует быть осторожными при использовании indent="yes"
там, где в содержимом документа могут встречаться значащие пробелы. Индентация позволяет процессору при выводе документа добавлять пробельные символы по собственному усмотрению. В случаях, когда при последующей обработке преобразованного документа пробельные символы могут быть восприняты неадекватно, лучше индентацию не использовать.
Для того чтобы вывести текстовое содержимое некоторых элементов в виде секций CDATA, XSLT предлагает простой механизм — следует лишь перечислить в атрибуте cdata-section-elements
элемента xsl:output
элементы, которые на выходе должны содержать секции символьных данных.
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
indent="yes"
cdata-section-elements="page"/>
]]>
В соответствии с синтаксисом XML, секции CDATA не могут содержать последовательности символов " ]]>
". Потому, встретив такую комбинацию в тексте элемента, имя которого включено в cdata-section-elements
, процессор заменит ее двумя секциями CDATA. Одна будет содержать " ]]
", вторая – " >
".
]]>
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
indent="yes"
cdata-section-elements="data pre"/>
]]>
]]>
Для определения логической структуры документов в XML используются DTD — определения типов документов. В большинстве случаев определения типов содержатся во внешних ресурсах, которые включаются в документ в виде системных или публичных идентификаторов.
XSLT позволяет создавать ссылки на внешние определения типов при помощи атрибута doctype-system
элемента xsl:output
.
Предположим, что мы создаем документ, логическая схема которого определена во внешнем файле по адресу "/dtds/document.dtd"
. Тогда, определив в преобразовании элемент xsl:output
с атрибутом doctype-system
, равным "/dtds/document.dtd"
, мы получим в выходящем документе определение типа в виде
элемент SYSTEM "/dtds/document.dtd">
где
элемент
— первый элемент выходящего документа.
content
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
content
Если в преобразовании атрибутом doctype-system
элемента xsl:output
задано внешнее определение логического типа документа, это определение может быть расширено также и публичным идентификатором. Публичный идентификатор указывается в атрибуте doctype-public
элемента xsl:output
. Его использование может быть продемонстрировано следующим примером.
content
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
doctype-system="/dtds/document.dtd"
doctype-public="-//Document//Description" />
PUBLIC "-//Document//Description" "/dtds/document.dtd">
content
Атрибут media-type
позволяет задавать медиа-тип содержимого выходящего документа. Для метода вывода "xml"
значением media-type
по умолчанию является "text/xml"
. Несмотря на то, что media-type
не оказывает никакого влияния на содержимое самого документа, XSLT-процессоры, используемые на стороне сервера, могут в зависимости от значения этого атрибута изменять MIME-тип исходящих данных при использовании, к примеру, такого протокола, как HTTP.
XML-документы, в принципе, могут быть корректными и без декларации XML. Поэтому XSLT позволяет опускать эту декларацию в выходящем документе, для чего значению атрибута omit-xml-declaration
должно быть присвоено "yes"
:
omit-xml-declaration="yes"/>
В случае если значение атрибута omit-xml-declaration
опущено или не равно "yes"
, процессор будет выводить в выходящем документе декларацию XML, которая включает информацию о версии (по умолчанию "1.0"
) и кодировке документа (по умолчанию "utf-8"
или "utf-16"
в зависимости от процессора).
Для того чтобы объявить документ как самостоятельный или несамостоятельный (standalone или non-standalone соответственно), следует использовать атрибут standalone
элемента xsl:output
. Если этот атрибут будет присутствовать в xsl:output
, то процессор включит в декларацию XML объявление standalone
с соответствующим значением. Если атрибут standalone
не указан, объявление standalone
в декларацию XML выходящего документа включено не будет.
Интервал:
Закладка: