Чтение онлайн

на главную

Жанры

Холзнер Стивен

Шрифт:

Основная задача XSLT состоит не просто в замене одного элемента на другой, но в полной реорганизации содержимого XML-документа. Например, вам может потребоваться реорганизовать

planets.xml
в терминах плотности планет при помощи XSLT для создания нового XML-документа:

<?xml version="1.0" encoding="UTF-8"?>

<DATA>

 <DENSITY>

<VALUE>.983</VALUE>

<NAME>Mercury</NAME>

<MASS>.0553</MASS>

<DAY>58.65</DAY>

<RADIUS>1516</RADIUS>

 </DENSITY>

 <DENSITY>

<VALUE>.943</VALUE>

<NAME>Venus</NAME>

<MASS>.815</MASS>

<DAY>116.75</DAY>

<RADIUS>3716</RADIUS>

 </DENSITY>

 <DENSITY>

<VALUE>1</VALUE>

<NAME>Earth</NAME>

<MASS>1</MASS>

<DAY>1</DAY>

<RADIUS>2107</RADIUS>

 </DENSITY>

</DATA>

Мы

рассмотрим преобразование, которое полностью меняет содержимое
planets.xml
, оставляя только небольшой код HTML и код JavaScript для отображения нескольких кнопок в браузере.

До сих пор мы создавали новые элементы только при помощи элементов буквального результата, то есть рассматривая новые элементы как текст и встраивая их в таблицу стилей. Но, как мы увидим в этой главе, не всегда возможно знать имена создаваемых новых элементов. Можно состыковать вместе создаваемые элементы по ходу дела, рассматривая их как сырой текст, но это явная недоработка, поскольку разметка трактуется как текст. В этой главе мы начнем применять элементы XSLT

<xsl:element>
,
<xsl:attribute>
,
<xsl:processing-instruction>
и
<xsl:comment>
для создания новых элементов, атрибутов, инструкций обработки и комментариев на этапе выполнения. Хорошее знание этих элементов необходимо при реорганизации содержимого XML.

Мы также рассмотрим использование режимов XSLT для осуществления нескольких преобразований с документом и сориентируемся, как применять только один из нескольких подходящих шаблонов.

В большей части этой главы исследуются возможности элемента

<xsl:output>
, с краткого обзора которого я и начну.

Элемент <xsl:output>

С элементом

<xsl:output>
мы впервые познакомились в главе 2 и использовали его, главным образом, для задания типа результирующего документа. Этот тип может задать, например, будет ли процессор XSLT записывать инструкцию обработки XML,
<?xml version="1.0"?>
, в начале документа, а также задать тип MIME (такой, как «
text/xml
» или «
text/html
») документов, отправляемых процессором XSLT из web-сервера браузеру. Кроме того,
если вы установите выходной тип в HTML, большинство процессоров XSLT смогут распознать, что не всем элементам HTML необходимы закрывающие или открывающие теги и т.п.

В следующем списке перечислены атрибуты

<xsl:output>
:

• 

cdata-section-elements
(необязательный). Задает имена тех элементов, чье содержимое должно выводиться как разделы
CDATA
. Принимает значения списка
QName
, разделенного символами-разделителями;

• 

doctype-public
(необязательный). Задает открытый идентификатор, который будет использован в объявлении
<!DOCTYPE>
в выходных данных. Устанавливается в строковое значение;

• 

doctype-system
(необязательный). Задает системный идентификатор, который будет использован в объявлении
<!DOCTYPE>
в выходных данных. Устанавливается в строковое значение;

• 

encoding
(необязательный). Задает кодировку символов. Устанавливается в строковое значение;

• 

indent
(необязательный). Определяет, будет ли выходной документ выровнен с отражением структуры вложенности. Устанавливается в
yes
или
no
;

• 

media-type
(необязательный). Задает тип MIME вывода. Устанавливается в строковое значение;

• 

method
(необязательный). Задает формат вывода. Принимает значения «
xml
», «
html
», «
text
» или допустимое имя
QName
;

• 

omit-xml-declaration
(необязательный). Определяет, будет ли включено в вывод объявление XML. Устанавливается в «
yes
» или «
no
»;

• 

standalone
(необязательный). Определяет, будет ли включено в вывод отдельное объявление XML, и если да — устанавливает его значение. Устанавливается в
yes
или
no
;

• 

version
(необязательный). Задает версию вывода. Принимает значение допустимого NMToken.

Чаще, всего используется атрибут

method
, поскольку именно он определяет требуемый тип выходного дерева. Официально методом вывода до умолчанию является HTML, при условии, что выполняются все три следующих условия:

• корневой узел результирующего дерева имеет дочерний элемент;

• в названии элемента документа результирующего дерева присутствует часть «

html
» (в любой комбинации верхнего и нижнего регистров) и пустой URI пространства имен;

• все текстовые узлы перед первым дочерним элементом корневого узла содержат только символы-разделители.

Если выполняются все три этих условия, то по умолчанию метод вывода устанавливается в HTML. В ином случае методов вывода по умолчанию является XML.

Тем не менее, не стоит полагаться на установки метода вывода по умолчанию, лучше явно присвоить этому атрибуту значение. Три распространенных значения атрибута

method
— «
html
», «
xml
» и «
text
», и мы познакомимся с ними в следующих разделах. 

Поделиться:
Популярные книги

Оружейникъ

Кулаков Алексей Иванович
2. Александр Агренев
Фантастика:
альтернативная история
9.17
рейтинг книги
Оружейникъ

Отверженный VII: Долг

Опсокополос Алексис
7. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VII: Долг

Аномальный наследник. Том 4

Тарс Элиан
3. Аномальный наследник
Фантастика:
фэнтези
7.33
рейтинг книги
Аномальный наследник. Том 4

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Имперец. Том 5

Романов Михаил Яковлевич
4. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Имперец. Том 5

Всадники бедствия

Мантикор Артемис
8. Покоривший СТЕНУ
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Всадники бедствия

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9

Архил...? Книга 2

Кожевников Павел
2. Архил...?
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Архил...? Книга 2

Довлатов. Сонный лекарь 2

Голд Джон
2. Не вывожу
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь 2

Последний Паладин. Том 3

Саваровский Роман
3. Путь Паладина
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 3

Попаданка в деле, или Ваш любимый доктор - 2

Марей Соня
2. Попаданка в деле, или Ваш любимый доктор
Любовные романы:
любовно-фантастические романы
7.43
рейтинг книги
Попаданка в деле, или Ваш любимый доктор - 2

Алекс и Алекс

Афанасьев Семен
1. Алекс и Алекс
Фантастика:
боевая фантастика
6.83
рейтинг книги
Алекс и Алекс

Бастард Императора. Том 6

Орлов Андрей Юрьевич
6. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 6

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...