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

на главную - закладки

Жанры

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

Шрифт:

Наиболее важное правило по умолчанию применяется к элементам и может быть выражено следующим образом:

<xsl:template match="*">

 <xsl:apply-templates/>

</xsl:template>

Это правило приведено здесь только для гарантии того, что каждый элемент, от корня и ниже, будет обрабатываться при помощи <xsl:apply-templates/>, если не предоставить другого правила, которое перекроет правило по умолчанию.

Правило по умолчанию для текстовых узлов можно выразить следующим образом: функция XSLT

text
выбирает текст узла, так что текст текстового узла добавляется в выходной документ:

<xsl:template match="text">

 <xsl:value-of select="."/>

</xsl:template>

Правило по умолчанию того же вида применяется к атрибутам, которые добавляются в выходной документ при помощи следующего правила, где выражение "@*" выбирает любой атрибут:

<xsl:template match="@*">

 <xsl:value-of select="."/>

</xsl:template>

По умолчанию инструкции обработки не вставляются в выходной документ, поэтому их правило по умолчанию можно выразить просто при помощи следующей функции-инструкции обработки XSLT, которая выбирает инструкции обработки (как мы увидим в главе 8):

<xsl:template match="processing-instruction"/>

То же верно для комментариев — их правило по умолчанию может быть выражено при помощи функции XSLT

comment
, которая также будет рассмотрена в главе 8:

<xsl:template match="comment"/>

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

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</xsl:stylesheet>

А вот результат применения этой таблицы стилей к

planets.xml
. Заметьте, что правило по умолчанию для атрибутов не применялось, потому что они не являются дочерними по отношению к другим узлам:

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

Mercury

.0553

58.65

1516

.983

43.4

Venus

.815

116.75

3716

.943

66.8

Earth

1

1

2107

1

128.4

ПРАВИЛА ПО УМОЛЧАНИЮ И INTERNET EXPLORER

Одна из проблем при работе с XSLT в Internet Explorer 5.5 или младше состоит в том, что браузер не предоставляет никаких правил по умолчанию. Необходимо задавать все правила самостоятельно, если только не установлен процессор MSXML3 в режиме замены (подробнее см. главу 2) или вы не обновили браузер до Internet Explorer 6.0.

Кроме того, узлы-разделители исходного документа сохраняются, поэтому можно считать, что следующее правило также является правилом по умолчанию:

<xsl:output preserve-space="*"/>
.

Удаление содержимого

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

Предположим, нам нужно удалить из

planets.xml
все данные о планетах, за исключением их названий и данных о массе. Следующая таблица стилей выполняет данную задачу.

Листинг 3.7. Удаление содержимого

<?xml versiоn="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:strip-space elements="*"/>

 <xsl:output method="xml" indent="yes"/>

 <xsl:template match="/">

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="PLANETS">

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:copy>

<xsl:apply-templates/>

</xsl:copy>

 </xsl:template>

 <xsl:template match="NAME">

<xsl:copy>

<xsl:apply-templates/>

</xsl:copy>

 </xsl:template>

 <xsl:template match="MASS">

<xsl:copy>

<xsl:value-of select="."/>

<xsl:value-of select="@UNITS"/>

</xsl:copy>

 </xsl:template>

 <xsl:template match="RADIUS">

 </xsl:template>

 <xsl:template match="DAY">

 </xsl:template>

 <xsl:template match="DENSITY">

 </xsl:template>

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

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Пересмешник

Пехов Алексей Юрьевич
Фантастика:
фэнтези
9.38
рейтинг книги
Пересмешник

Т. 03 Гражданин Галактики

Хайнлайн Роберт Энсон
3. Отцы-основатели. Весь Хайнлайн
Фантастика:
научная фантастика
7.00
рейтинг книги
Т. 03 Гражданин Галактики

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Хозяин Стужи 8

Петров Максим Николаевич
8. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Хозяин Стужи 8

Родословная. Том 1

Ткачев Андрей Юрьевич
1. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Родословная. Том 1

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Прайм. Хомори

Бор Жорж
2. Легенда
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Прайм. Хомори

Громовая поступь. Трилогия

Мазуров Дмитрий
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Громовая поступь. Трилогия

Личный аптекарь императора. Том 3

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

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Кодекс Охотника. Книга XXXIV

Винокуров Юрий
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIV

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

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

Наследие Маозари 7

Панежин Евгений
7. Наследие Маозари
Фантастика:
боевая фантастика
юмористическое фэнтези
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 7