Стивен Холзнер - 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.xmlDTD и объявил три неразобранных сущности, соответствующих рисункам планет — 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
.
Полученный результат:
Читать дальшеИнтервал:
Закладка: