Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Новые элементы можно создавать при помощи элемента , который очень удобен для задания имени нового элемента на этапе выполнения.
У этого элемента три атрибута:
• name
(обязательный). Имя создаваемого элемента. Принимает значение шаблона значений атрибута, возвращающего QName
;
• namespace
(необязательный). URI пространства имен нового элемента. Принимает значение шаблона значений атрибута, возвращающего URI;
• use-attribute-sets
(необязательный). Задает наборы атрибутов, содержащие атрибуты этого элемента. Принимает значение списка элементов QName
, разделенных символами-разделителями.
Элемент содержит тело шаблона.
Пусть, например, мне нужно хранить названия планет в атрибутах NAME
, а не в элементе в planets.xml
:
.0553
58.65
1516
.983
43.4
.
.
.
Предположим теперь, что при помощи значений этого атрибута мне нужно создать имена новых элементов в результирующем документе — такие, как , и :
.0553
58.65
1516
.983
43.4
.
.
.
В этом случае я не знаю имени выходного элемента до времени выполнения, потому и не могу просто применить элемент буквального результата. Я мог бы скомпоновать новый элемент, трактуя его как текст (что и показано в примере ниже, где я вывожу символы, подобные «<���», при помощи атрибута disable-output-escaping
элемента ):
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<
>
</</xsl:text>
>
Но это грубый способ, при котором разметка рассматривается как простой текст. С другой стороны, зная название планеты, я могу создать новый элемент при помощи (листинг 6.6), получив название новой планеты из атрибута NAME
следующим образом.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Этот способ намного чище и проще. Ниже показан результат, в котором на этапе выполнения созданы новые элементы с именами различных планет:
.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
66.8
1
1
2107
1
128.4
Таким способом можно создавать новые элементы и задавать им имя во время преобразования XSLT.
Элемент : создание новых атрибутов
Аналогично тому, как вы можете создавать новые элементы при помощи и устанавливать имя и содержимое элемента на этапе выполнения, при помощи элемента это можно делать для атрибутов.
У элемента два атрибута:
• name
(обязательный). Имя нового атрибута. Принимает значение шаблона значений атрибута, возвращающего QName
;
• namespace
(необязательный). Пространство имен нового атрибута. Устанавливается в URI.
Этот элемент содержит в себе тело шаблона, которое устанавливает значение атрибута.
В листинге 6.7 я создаю новые элементы с атрибутами, которые соответствуют различным названиям планет (значения берутся из атрибута COLOR
исходных элементов ).
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Planets
Как можно видеть в приведенном ниже результате, я создал новые атрибуты «с ходу», используя названия планет:
<���НТМL>
Planets
Элемент : создание комментариев
По ходу дела можно также создавать и комментарии при помощи элемента . Этот элемент не имеет атрибутов и содержит тело шаблона, задающего текст комментария.
В листинге 6.8 я создаю комментарии для замены элементов ; текст комментария включает название планеты.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Planets
This was the element
Вот результат:
Planets
Элемент : создание инструкций обработки
При помощи элемента можно создавать новые инструкции обработки. У этого элемента один атрибут:
• name
(обязательный). Задает имя инструкции обработки. Принимает значение шаблона значений атрибута, возвращающего NCName.
В следующем примере я удалил инструкцию из начала planets.xml
:
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
.
.
.
Для того чтобы снова добавить эту инструкцию обработки, можно применить элемент (листинг 6.9). Пункты type
и href
в инструкции обработки, например , в действительности не являются атрибутами, поэтому их значения нужно устанавливать не при помощи , а используя простой текст.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
type="text/xml" href="planets.xsl"
Вот результат, где инструкция обработки снова на месте:
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
.
.
.
Элемент : создание нескольких выходных документов
В рабочем проекте XSLT 1.1 был представлен новым элемент, , предназначенный для поддержки нескольких выходных документов, — и, скорее всего, этот элемент будет добавлен в XSLT 2.0. Он имеет следующие атрибуты:
• href
(обязательный). Указывает место, в которое должен быть помещен новый документ. Устанавливается в абсолютный или относительный URI, без идентификатора фрагмента;
• method
(необязательный). Устанавливает метод вывода, используемый для создания результирующего документа. Устанавливается в «xml», «html», «text» или QName, которое не является NCName;
• version
(необязательный). Задает версию выходного документа. Устанавливается в NMTOKEN;
• encoding
(необязательный). Задает кодировку выходного документа. Устанавливается в строку;
• omit-xml-declaration
(необязательный). Принимает значения «yes» или «no» для того, чтобы пропускать или не пропускать объявление XML;
• cdata-section-elements
(необязательный). Определяет имена тех элементов, чье содержимое вы хотите вывести как разделы CDATA. Принимает значение разделенного символами-разделителями списка QName;
• doctype-public
(необязательный). Определяет открытый идентификатор, который будет использован в объявлении вывода. Устанавливается в строковое значение;
•
вывода. Устанавливается в строковое значение;doctype-system
(необязательный). Определяет системный идентификатор, который будет использован в объявлении
Интервал:
Закладка: