.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
исходных элементов ).
Листинг 6.7. Применение
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Planets
Как можно видеть в приведенном ниже результате, я создал новые атрибуты «с ходу», используя названия планет:
<���НТМL>
Planets
Элемент : создание комментариев
По ходу дела можно также создавать и комментарии при помощи элемента . Этот элемент не имеет атрибутов и содержит тело шаблона, задающего текст комментария.
В листинге 6.8 я создаю комментарии для замены элементов ; текст комментария включает название планеты.
Листинг 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
в инструкции обработки, например , в действительности не являются атрибутами, поэтому их значения нужно устанавливать не при помощи , а используя простой текст.
Листинг 6.9. Применение
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
(необязательный). Определяет открытый идентификатор, который будет использован в объявлении вывода. Устанавливается в строковое значение;
Читать дальше