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

на главную

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

xmlns:xhtml="http://www.w3.org/1999/xhtml">

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

 </A>

</xsl:template>

будет элемент вида:

<A href="#"

 xmlns:xhtml="http://www.w3.org/1999/xhtml">

 Visit out site!

</A>

Как можно заметить, процессор воссоздал не только сам элемент, но также его атрибуты и объявления пространств имен. В этом и есть

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

□ Процессор не будет копировать атрибуты, принадлежащие пространству имен XSLT.

□ Процессор не будет создавать узел пространства имен, соответствующий URI

http://www.w3.org/1999/XSL/Transform
, то есть URI пространства имен XSLT.

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

exclude-result-prefixes
самого литерального элемента или элемента
xsl:stylesheet
.

Пример
Листинг 4.26

<xsl:stylesheet

 version="1.0"

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

 xmlns:xhtml="http://www.w3.org/1999/XHTML">

 <xsl:template match="/">

<p

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

xslt:exclude-result-prefixes="xhtml">

<xslt:value-of select="2 * 2"/>

 </xsl:template>

</xsl:stylesheet>

Обратим внимание на следующие особенности этого преобразования.

□ В нем объявлено пространство имен с префиксом

xhtml
.

□ Литеральный элемент

p
содержит объявление пространства имен с префиксом
xslt
и URI
http://www.w3.org/1999/XSL/Transform
.

□ Литеральный элемент

p
содержит атрибут,
xslt:exclude-result-prefixes
, принадлежащий пространству имен XSLT.

Как ни странно, ни одно из этих объявлений не проникнет в выходящий документ, который будет иметь вид

4

Попробуем объяснить такой результат. Атрибут

xslt:exclude-result-prefixes
не был включен в результирующий элемент
p
, поскольку принадлежал пространству имен XSLT (отметим еще раз, что принадлежность эта определяется не префиксом, а значением
URI
). Далее, объявление пространства имен

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

которое содержалось в литеральном элементе

p
, не вошло в результат, потому что URI этого объявления совпадало с URI пространства имен XSLT. И, наконец, объявление пространства имен
xhtml
было исключено атрибутом
exclude-result-prefixes
.

Атрибуты

языка XSLT в литеральных элементах

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

Таблица 4.3. XSLT-атрибуты литеральных элементов

Атрибут Назначение
xsl:version
Указывает версию языка в случае использования упрощенного синтаксиса записи преобразований
xsl:exclude-result-prefixes
Перечисляет префиксы пространств имен, которые должны быть исключены в данном элементе
xsl:extension-element-prefixes
Перечисляет префиксы пространств имен, которые используются в элементах расширения
xsl:use-attribute-sets
Перечисляет названия именованных наборов атрибутов, которые следует включить в данный элемент на выходе

Шаблоны значений атрибутов

Во многих элементах XSLT в качестве значений атрибутов могут быть указаны специальные шаблоны, называемые шаблонами значений атрибутов (attribute value templates). Замечательное свойство этих шаблонов заключается в том, что вместо простых строковых значений в атрибутах можно использовать результаты вычисления выражений. Выражения в шаблонах значений атрибутов должны быть заключены в фигурные скобки ("

{}
"). Если процессор встретит внутри значения атрибута выражение в таких скобках, он должен будет вычислить это выражение и заменить его в атрибуте вместе с фигурными скобками на результат вычисления в строковом виде.

Пример

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

<mark-up type="b">This text should be marked bold.</mark-up>

в котором атрибут

type
элемента
mark-up
указывает на тип элемента разметки, который должен быть использован для данного текстового фрагмента. Для того чтобы получить элемент вида

<b>This text should be marked bold.</b>

можно использовать следующий шаблон:

<xsl:template match="mark-up">

 <xsl:element name="{@type}">

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

 </xsl:element>

</xsl:template>

Таким образом, в качестве имени нового элемента, содержащего текст элемента

mark-up
, будет использовано значение атрибута
type
.

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

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Девяностые приближаются

Иванов Дмитрий
3. Девяностые
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Девяностые приближаются

Жена фаворита королевы. Посмешище двора

Семина Дия
Фантастика:
фэнтези
5.00
рейтинг книги
Жена фаворита королевы. Посмешище двора

(не)Бальмануг. Дочь 2

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

Буря империи

Сай Ярослав
6. Медорфенов
Фантастика:
аниме
фэнтези
фантастика: прочее
эпическая фантастика
5.00
рейтинг книги
Буря империи

Идеальный мир для Лекаря 13

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

Книга пятая: Древний

Злобин Михаил
5. О чем молчат могилы
Фантастика:
фэнтези
городское фэнтези
мистика
7.68
рейтинг книги
Книга пятая: Древний

Зеркало силы

Кас Маркус
3. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Зеркало силы

Имя нам Легион. Том 5

Дорничев Дмитрий
5. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 5

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

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

Архил...? 4

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

Хозяйка лавандовой долины

Скор Элен
2. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Хозяйка лавандовой долины

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

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

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2