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

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

Жанры

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

Шрифт:

При использовании атрибута

doctype-system
процессор создает объявление типа документа непосредственно перед первым элементом. В этом случае имя, следующее за
<!DOCTYPE>
, будет именем корневого элемента. Заметьте, что если вы также используете атрибут
doctype-public
, процессор XSLT выведет «
PUBLIC
», вслед за ним открытый идентификатор и затем системный идентификатор. Если вы не используете атрибут
doctype-public
, процессор выведет «
SYSTEM
» и вслед за ним системный идентификатор. Теоретически атрибут
doctype-public
должен игнорироваться, если не задан также атрибут
doctype-system
, хотя большинство процессоров, кажется, не следуют этому правилу. Мы увидим, как работать с атрибутами
doctype-public
и
doctype-system
в этой главе при преобразовании XML в XHTML.

Наконец, для метода вывода XML значением по умолчанию для атрибута

media-type
является «
text/xml
».

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

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="@*|node">

<xsl:copy>

<xsl:apply-templates select="@*|node"/>

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Этот пример был приведен в начале главы, в нем

planets.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>

Вот таблица стилей (листинг 6.3), создающая это преобразование.

Листинг 6.3. Реорганизация planets.xml на основе плотности

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

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

 <xsl:template match="PLANETS">

<DATA>

<xsl:apply-templates/>

</DATA>

 </xsl:template>

 <xsl:template match="PLANET">

<DENSITY>

<VALUE>

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

</VALUE>

<xsl:apply-templates/>

</DENSITY>

 </xsl:template>

 <xsl:template match="NAME">

<NAME>

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

</NAME>

 </xsl:template>

 <xsl:template match="MASS">

<MASS>

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

</MASS>

 </xsl:template>

 <xsl:template match="RADIUS">

<RADIUS>

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

</RADIUS>

 </xsl:template>

 <xsl:template match="DAY">

<DAY>

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

</DAY>

 </xsl:template>

 <xsl:template match="DENSITY">

 </xsl:template>

 <xsl:template match="DISTANCE">

 </xsl:template>

</xsl:stylesheet>

Следующий пример впервые был приведен в главе 5. В этом случае я только перечислил планеты из

planets.xml
, но в выходном документе я хотел видеть не просто фразу «The first three planets are: Mercury Venus Earth» (первые три планеты: Меркурий Венера Земля), a «The first three planets are: Mercury, Venus, and Earth.». Для этого я применил элементы
<xsl:if>
:

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

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Жертва

Привалов Сергей
2. Звездный Бродяга
Фантастика:
боевая фантастика
космическая фантастика
рпг
попаданцы
6.25
рейтинг книги
Жертва

Сердце Дракона. Том 10

Клеванский Кирилл Сергеевич
10. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.14
рейтинг книги
Сердце Дракона. Том 10

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Бальмануг. (Не) Любовница 2

Лашина Полина
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. (Не) Любовница 2

Карл Маркс

Серебрякова Галина Иосифовна
342. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Карл Маркс

Изгои

Владимиров Денис
5. Глэрд
Фантастика:
фэнтези
боевая фантастика
5.00
рейтинг книги
Изгои

Камаэль

Люук Найтгест
Фантастика:
фэнтези
ужасы и мистика
5.20
рейтинг книги
Камаэль

Древесный маг Орловского княжества 6

Павлов Игорь Васильевич
6. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 6

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

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

Ищу жену с прицепом

Рам Янка
2. Спасатели
Любовные романы:
современные любовные романы
6.40
рейтинг книги
Ищу жену с прицепом

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Князь Серединного мира

Отряд

Валериев Игорь
5. Ермак
Фантастика:
альтернативная история
5.25
рейтинг книги
Отряд

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный