В следующем примере я только уберу из документа объявление XML, копируя при этом все остальное. Заметьте, что объявление XML не есть узел, поэтому ничего страшного, если оно будет удовлетворять копирующему шаблону:
Полезно знать об этом при создании фрагментов XML или выполнении другой работы. Тем не менее, заметим, что во всех законченных документах XML — даже написанных самостоятельно при помощи разнообразных приложений XML, таких как WML — в начале обязательно должно быть объявление XML.
Создание уникальных идентификаторов при помощи generate-id
При существенном изменении структуры документов важно рассмотреть еще одну тему: как в результирующих документах создавать идентификаторы элементов для обращения к ним при необходимости. Представьте, например, что вам нужно при помощи таблицы стилей добавить в документ оглавление, записи в котором будут представлять собой гиперссылки, так чтобы пользователь по щелчку на них сразу переходил к нужному разделу. В этом случае потребуется какой-то способ идентификации элементов в результирующем документе, в чем поможет функция
generate-id
.
В следующем примере я добавляю составленное из гиперссылок оглавление в
planets.html
. Для создания оглавления я прохожу в цикле по всем планетам при помощи элемента
<xsl:for-each>
. На каждом шаге цикла я создаю гиперссылку и при помощи шаблона значений атрибута создаю атрибут
HREF
, который устанавливается в уникальный идентификатор для рассматриваемой планеты. Заметьте, что, несмотря на свое имя, функция
generate-id
создает только строковый идентификатор элемента, она не создает атрибуты ID: