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

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

Жанры

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

Шрифт:

.

.

 </xsl:template>

</xsl:stylesheet>

В новом шаблоне, обрабатывающем элементы

<PLANET>
, я должен извлечь данные из каждого элемента
<PLANET>
, то есть восстановить значения в дочерних элементах элемента
<PLANET>
, таких как
<MASS>
,
<DAY>
и т.д.:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="#"?>

<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:value-of>
.

Доступ к значениям узлов

Элемент

<xsl:value-of>
записывает в результирующий документ строковое значение выражения; в частности, с его помощью можно возвратить значение узла, которым для элемента будет заключенный в элемент текст. Атрибуту выбора элемента
<xsl:value-of>
можно присвоить выражение XPath, задающее узел или набор узлов. В шаблоне, задающем элементы
<PLANET>
, обратиться к дочернему элементу
<MASS>
можно при помощи выражения XPath "
child::MASS
". Как мы увидим в главе 4, выражения XPath можно писать разными способами: например, вместо "
child::MASS
" можно просто написать "
MASS
". Таким образом, получить данные дочерних элементов, таких как
<MASS>
,
<DAY>
и т.д., можно следующим способом (листинг 3.1).

Листинг 3.1. Полная версия planets.xsl

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/PLANETS">

<HTML>

<HEAD>

<TITLE>

The Planets Table

</TITLE>

</HEAD>

<BODY>

<Н1>

The Planets Table

</Н1>

<TABLE BORDER="2">

<TR>

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

</TR>

<xsl:apply-templates/>

</TABLE>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<TR>

<TD><xsl:value-of select="NAME"/></TD>

<TD><xsl:value-of select="MASS"/></TD>

<TD><xsl:value-of select="RADIUS"/></TD>

<TD><xsl:value-of select="DAY"/></TD>

</TR>

 </xsl:template>

</xsl:stylesheet>

Создание

образцов выбора

Как вы могли ожидать, исходя из того, что "

child::MASS
" можно представить в виде "
MASS
" и применения шаблонов, таких как "
/
", "
/PLANETS
" и т.д., вплотную познакомиться с созданием образцов выбора не так-то просто — этому посвящена вся глава 4.

Образцы выбора (match pattern) являются подмножеством полного языка XPath, их можно использовать в элементах

<xsl:template
>,
<xsl:key>
и
<xsl:number>
. В частности, в образец можно установить атрибут match у
<xsl:template>
и
<xsl:key>
, и атрибуты
count
и
from
элемента
<xsl:number>
. В следующем списке приведен ряд примеров образцов выбора, много других примеров будет показано в главе 4 при подробном обсуждении использования XPath для выбора узлов и атрибутов:

• "

/
" выбирает корневой узел;

• "

*
" выбирает элементы узлов (но не всех узлов, как зачастую ошибочно полагают);

• "

PLANET
" выбирает элементы
<PLANET>
;

• "

PLANET/MASS
" выбирает все элементы
<MASS>
, дочерние для элемента
<PLANET>
;

• "

//PLANET
" выбирает все элементы
<PLANET>
, производные от корневого узла;

• "

.
" выбирает текущий узел (технически это не образец выбора, а выражение XPath, как мы увидим в главе 7).

Образцы можно также использовать в атрибуте

select
элементов
<xsl:apply-templates>
,
<xsl:value-of>
,
<xsl:for-each>
,
<xsl:copy-of>
и
<xsl:sort>
; фактически атрибут
select
этих элементов может содержать полные выражения XPath, а не только образцы выбора. Атрибут
select
элемента
<xsl:value-of>
определяет дочерний узел, значение которого нужно получить:

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

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Наследник павшего дома. Том IV

Вайс Александр
4. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том IV

Вернуть Боярство 11

Мамаев Максим
11. Пепел
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Вернуть Боярство 11

Кодекс Крови. Книга ХIII

Борзых М.
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIII

Кодекс Крови. Книга ХVII

Борзых М.
17. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVII

Трактир «Разбитые надежды»

Свержин Владимир Игоревич
1. Трактир "Разбитые надежды"
Фантастика:
боевая фантастика
7.69
рейтинг книги
Трактир «Разбитые надежды»

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Бывшая жена драконьего военачальника

Найт Алекс
2. Мир Разлома
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бывшая жена драконьего военачальника

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

Идеальный мир для Демонолога 3

Сапфир Олег
3. Демонолог
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Демонолога 3

Отмороженный 13.0

Гарцевич Евгений Александрович
13. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
фэнтези
5.00
рейтинг книги
Отмороженный 13.0

Город Богов 3

Парсиев Дмитрий
3. Профсоюз водителей грузовых драконов
Фантастика:
юмористическое фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Город Богов 3