Валиков Алексей Н.
Шрифт:
Следует обратить внимание на следующие особенности этого примера.
□ Элементы верхнего уровня в обязательном порядке должны иметь ненулевое пространство имен. Поэтому мы включили элемент
□ В шаблонах, которые обрабатывают элементы включенного документа, должны указываться паттерны, соответствующие расширенным именам этих элементов, то есть не
□ Чтобы не выводить объявления пространств имен в выходящем документе, мы включили префикс
Как можно видеть, включение элемента
Результат следующего преобразования в точности совпадает с результатом преобразования в предыдущем примере.
Хитрость заключается в том, что мы обрабатываем содержимое именованного шаблона, которое вполне может принадлежать нулевому пространству имен. Единственное, что следует иметь в виду — это то, что этот шаблон не должен конфликтовать с другими шаблонами.
В отличие от предыдущего варианта с преобразованием, включенным в документ, этот способ является гораздо более работоспособным. Минусом его является только то, что на вход все равно должен подаваться какой-нибудь XML-документ, даже если его содержимое и не обрабатывается.
Литеральные элементы результата
Как мы уже видели из множества примеров, преобразования состоят не только из элементов языка XSLT. Например, в шаблоне
элемент
Когда процессор выполняет шаблон, содержащий литеральные результирующие элементы, для них в результирующем документе создаются элементы с тем же расширенным именем и атрибутами, содержимым которых является результат выполнения содержимого литерального элемента в преобразовании.