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

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

Жанры

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

Шрифт:

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

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>
:

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

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

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

Герцог и я

Куин Джулия
1. Бриджертоны
Любовные романы:
исторические любовные романы
8.92
рейтинг книги
Герцог и я

Ярар. Начало

Грехов Тимофей
1. Ярар
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ярар. Начало

Искатель 1

Шиленко Сергей
1. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Искатель 1

Вечный. Книга VII

Рокотов Алексей
7. Вечный
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Вечный. Книга VII

Интриганка

Шелдон Сидни
Приключения:
исторические приключения
9.24
рейтинг книги
Интриганка

Андер Арес

Грехов Тимофей
1. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Андер Арес

Врубель

Коган Дора Зиновьевна
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Врубель

Эволюционер из трущоб. Том 10

Панарин Антон
10. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 10

Запечатанный во тьме. Том 3

NikL
3. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 3

Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30

Сапфир Олег
Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Цикл Идеальный мир для Лекаря. Компиляция. Книги 1-30

Хозяин Теней 7

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

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

В лапах зверя

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