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