Технология XSLT
Шрифт:
будет элемент вида:
Как можно заметить, процессор воссоздал не только сам элемент, но также его атрибуты и объявления пространств имен. В этом и есть
□ Процессор не будет копировать атрибуты, принадлежащие пространству имен XSLT.
□ Процессор не будет создавать узел пространства имен, соответствующий URI
□ Процессор не будет создавать узлы пространств имен, префиксы которых исключаются атрибутами
Обратим внимание на следующие особенности этого преобразования.
□ В нем объявлено пространство имен с префиксом
□ Литеральный элемент
□ Литеральный элемент
Как ни странно, ни одно из этих объявлений не проникнет в выходящий документ, который будет иметь вид
Попробуем объяснить такой результат. Атрибут
которое содержалось в литеральном элементе
Атрибуты
Мы упомянули о том, что литеральные элементы могут содержать атрибуты, принадлежащие пространству имен 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 встречается потребность создавать элементы с именами, которые заранее не известны, но могут быть вычислены в ходе выполнения преобразования. Представим себе документ
в котором атрибут
можно использовать следующий шаблон:
Таким образом, в качестве имени нового элемента, содержащего текст элемента