Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Функция
key
служит для поиска узлов с определенным значением по именованному ключу, ее следует применять следующим образом:
node-set key(name, value)
Функции передаются имя ключа name
в виде строки и требуемое значение ключа value
, которое нужно найти. Функция возвращает набор узлов из найденных узлов.
Ключи создаются при помощи элемента . Мы уже видели следующий пример в главе 4 — здесь я при помощи ключей выбираю планеты, чей атрибут COLOR
установлен в « BLUE
»:
.
.
.
Earth
"(Earth = 1)">1
1
2107
1
128.4
Теперь при помощи я могу создать ключ COLOR
, выбирающий элементы и проверяющий их атрибут COLOR
. Вот как он выглядит:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
Теперь я могу применить образец « key()
» для выбора элементов с атрибутом COLOR
со значением « BLUE
» таким образом:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
Name | Mass | Radius | Day |
.
.
.
И вот результат — как видите, единственной планетой, удовлетворившей образцу, была Земля:
<���НЕАD>
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Earth | 1 (Earth = 1) | 2107 miles | 1 days |
system-property()
Функция
system-property
возвращает значение нескольких системных свойств в виде строк; вот как ей следует пользоваться:
string system-property(property)
Можно проверять следующие возможные значения системного свойства property
:
• xsl:version
. Возвращает версию XSLT;
• xsl:vendor
. Возвращает строку, идентифицирующую производителя процессора XSLT;
• xsl:vendor-url
. Возвращает URL производителя процессора XSLT.
Вот пример — версию XSLT можно проверить, вызвав system-property('xsl:version')
;
xmlns:xsl="http.//www.w3.org/1999/XSL/Transform">
.
.
.
.
.
.
Проверка версии XSLT может понадобиться, если вы хотите воспользоваться возможностями, которые появились в последних версиях.
unparsed-entity-uri()
Функция unparsed-entity-uri()
предоставляет доступ к объявлениям неразобранных сущностей в DTD или схеме исходного документа. Неразобранная сущность (unparsed entity) — это обычно двоичные данные, такие как файл с рисунком. Функция применяется следующим образом:
string unparsed-entity-uri(name)
В функцию передается имя name неразобранной сущности, и функция возвращает для нее идентификатор. В следующем примере (листинг 8.6) я добавил в planets.xml
DTD и объявил три неразобранных сущности, соответствующих рисункам планет — image1
, image2
и image3
, — и обратился к ним, добавив в каждый элемент атрибут IMAGE
.
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
.
.
.
Заметьте, что некоторые процессоры XSLT не могут осуществлять выборку по ID, потому что они не читают объявления DTD и схему XML. Это одна из задач, которые призван решить XSLT 2.0 — сделать доступной информацию об идентификаторах.
last()
Функция last
возвращает число узлов в наборе узлов, поэтому ее значение равно позиции последнего узла. Она применяется следующим образом:
number last()
Следующий пример из главы 5 последовательно выводит в результирующий документ имена планет. Однако я хочу, чтобы выводилось не просто «The first three planets are: Mercury Venus Earth» (первые три планеты: Меркурий Венера Земля), a «The first three planets are: Mercury, Venus, and Earth.» Необходимые знаки пунктуации можно добавить, определяя элемент, с которым мы работаем, при помощи функции position и проверяя позицию при помощи :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets
The first three planets are:
,
and
.
Вот результат:
The Planets
The first three planets are: Mercury, Venus, and Earth.
local-name()
Функция local-name
возвращает локальное (неполное) имя узла. Функция применяется следующим образом:
string local-name(node-set?)
В функцию передается набор узлов с единственным узлом, и функция возвращает локальное имя этого узла. (Если в наборе узлов больше, чем один узел, берется только первый.) Если не передать никаких узлов, функция вернет локальное имя контекстного узла.
В следующем примере я создаю новые элементы при помощи и определяю имена контекстных узлов при помощи local-name
:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
name()
Функция name
аналогична local-name
, за тем исключением, что она возвращает полностью определенное имя узла. Вот как следует применять эту функцию:
string name(node-set?)
namespace-uri()
Функция namespace-uri
возвращает строку, содержащую URI пространства имен в расширенном имени узла. Как правило, это URI в объявлении пространства имен, установленное при помощи атрибутов xmlns
или xmlns:prefix
. Функция применяется следующим образом (заметьте, что эту функцию можно применять только к элементам или атрибутам, результатом обработки остальных узлов будет пустая строка):
string namespace-uri(node-set?)
Например, в planets.xml
я могу добавить пространство имен «star» (звезда):
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
.
.
.
И я могу найти URI этого пространства имен в таблице стилей при помощи namespace-uri
:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:star="http://www.starpowder.com">
.
.
.
Вот результат:
http://starpowder.com
position()
Функция position
возвращает позицию контекстного узла:
number position()
С этой функцией мы встречались на протяжении всей книги. Такой пример вы уже видели раньше в этой главе, в нем для создания предложения «The first three planets are: Mercury, Venus, and Earth.» используются функции last
и position
:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets
The first three planets are:
,
and
.
Полученный результат:
Читать дальшеИнтервал:
Закладка: