XSLT — страница 56 из 124

P/>

NameMassRadiusDay





Вот как это делается: сейчас я создал гиперссылки с атрибутом HREF, значение которого равно идентификатору элемента

; при помощи этого же идентификатора я сделал каждый элемент
назначением гиперссылки. Когда пользователь щелкает на гиперссылку в оглавлении, браузер прокручивает данные до соответствующей записи планеты в HTML-таблице. (Заметьте, что для того чтобы большинство браузеров осуществляли прокрутку, HTML-таблица должна быть вне пределов экрана.) Каждый процессор XSLT создает свои собственные идентификаторы; ниже приведен результат для процессора Xalan:

</code></pre></p><p><pre><code>   The Planets Table</code></pre></p><p><pre><code>

   The Planets Table

Mercury

<Р>

<Н2>

Venus

Earth

<Р>

NameMassRadiusDay
Mercury.0553 (Earth = 1)1516 miles58.65 days
Venus.815 (Earth = 1)3716 miles116.75 days
Earth1 (Earth = 1)2107 miles1 days

Результат показан на рис. 6.3 (в том числе — оглавление из гиперссылок). Пользователю достаточно щелкнуть на гиперссылке к соответствующей записи в таблице.

Рис. 6.3. Использование сгенерированных идентификаторов в гиперссылках

Создание разделов CDATA

При преобразованиях XML-XML может потребоваться вывести разделы CDATA. В XSLT это легко осуществимо при помощи атрибута

cdata-section-elements
элемента
. Упомянутый атрибут позволяет указать, содержимое каких элементов следует заключить в раздел CDATA. Последнее может понадобиться, например, при создании элементов сценария, когда браузер требует заключения кода сценария в раздел CDATA.

В следующем примере я поместил содержимое элементов

и
в
planets.xml
в разделы
CDATA
:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

И вот результат:

58.65

1516

.983

43.4

116.75

3716

.943

66.8

 .

 .

 .

ОБРАБОТКА CDATA В ИСХОДНОМ И РЕЗУЛЬТИРУЮЩЕМ ДОКУМЕНТЕ

Рассмотренная техника создает разделы CDATA результирующего документа, она не рассматривает как CDATA какие-либо данные исходного документа. Например, если вам нужно преобразовать в , поскольку ваш браузер требует, чтобы код сценария заключался в разделы CDATA, процессор XSLT испытает трудности с символом < в «х < у». В этом случае необходимо написать , для того чтобы процессор XSLT сгенерировал

Установка кодировки символов

Для значительных переработок исходных документов важно знать, что можно устанавливать кодировку символов в результирующих документах при помощи атрибута encoding элемента

. Однако нет гарантии, что ваш процессор XSLT будет поддерживать выбранную кодировку, поскольку процессоры обязаны поддерживать только кодировки UTF-8 и UTF-16. С другой стороны, если вы используете символ, не поддерживаемый в используемой кодировке, процессор XSLT либо выведет символ как ссылку на сущность, либо сгенерирует ошибку.