Валиков Алексей Н.
Шрифт:
Дело в том, что структуры XML-документов (даже принадлежащих одной логической схеме) могут быть настолько разнообразны, что создание императивной программы, которая выполняла бы их преобразование, является очень сложной задачей. Возможность включения или исключения тех или иных элементов, наличие или отсутствие атрибутов, да и неопределенность самой структуры документа в конечном итоге приводят к экспоненциальному увеличению количества операторов ветвления, циклов и так далее. Программа становится большой, сложной и малопонятной.
В то же время само преобразование может быть очень простым. Не понимая, что нужно сделать, чтобы преобразовать документ целиком, тем не менее, можно хорошо понимать, как следует обработать каждую из его частей.
Вследствие этого, язык XSLT был создан декларативным: вместо того, чтобы определять последовательность действий, программа в XSLT декларирует правила преобразования. Каждое из этих правил может в свою очередь вызывать другие правила, таким образом обеспечивая обработку документов сколь угодно сложной структуры.
Определение шаблонного правила
Элемент xsl:template
Синтаксис этого элемента приведен ниже:
Элемент верхнего уровня
Атрибут
В этом правиле атрибут
Шаблон также может иметь имя, определяемое атрибутом
В отличие от предыдущего примера, это правило не будет обрабатывать какие-либо определенные узлы. Вызвать его можно будет только по имени посредством элемента
При определении шаблона нужно обязательно указать хотя бы один из атрибутов
Атрибут
Атрибут
Атрибуты шаблонного правила не влияют на выполнение его содержимого. Они используются элементами
Вызов шаблонных правил
Рассмотрим следующий простой пример.
Попробуем написать пару шаблонов, которые будут изменять имена элементов