• doctype-public
(необязательный). Задает открытый идентификатор, который будет использован в объявлении <!DOCTYPE>
вывода. Устанавливается в строковое значение;
• doctype-system
(необязательный). Задает системный идентификатор, который будет использован в объявлении <!DOCTYPE>
вывода. Устанавливается в строковое значение;
• indent
(необязательный). Определяет, будет ли выходной документ выровнен для отображения структуры вложенности. Устанавливается в «yes» или «no»;
• media-type
(необязательный). Устанавливает тип MIME вывода. Устанавливается в строковое значение;
• standalone
(необязательный). Определяет, будет ли отдельное объявление включено в выходные данные, и если да, устанавливает его значение. Устанавливается в «yes» или «no».
Этот элемент содержит тело шаблона.
Следующий пример основан на упрощенной таблице стилей. В этом случае я создал в HTML- документе две рамки (frame), а также два HTML-документа для отображения в этих рамках (frame1.html
и frame2.html
). Первую рамку и ее документ я создал следующим образом:
<HTML>
<HEAD>
<TITLE>
Two Frames
</TITLE>
</HEAD>
<FRAMESET cols='50%, 50%'>
<FRAME src='frame1.html'/>
<xsl:document href='frame1.html'>
<HTML>
<HEAD>
<TITLE>
Frame 1
</TITLE>
</HEAD>
<BODY>
<H1>This is frame 1.</H1>
</BODY>
</HTML>
</xsl:document>
.
.
.
Затем я могу создать вторую рамку и ее документ:
<HTML>
<HEAD>
<TITLE>
Two Frames
</TITLE>
</HEAD>
<FRAMESET cols='50%, 50%'>
<FRAME src='frame1.html'/>
<xsl:document href='frame1.html'>
<HTML>
<HEAD>
<TITLE>
Frame 1
</TITLE>
</HEAD>
<BODY>
<H1>This is frame 1.</H1>
</BODY>
</HTML>
</xsl:document>
<FRAME src=' frame2.html'/>
<xsl:document href='frame2.html'>
<HTML>
<HEAD>
<TITLE>
Frame 2
</TITLE>
</HEAD>
<BODY>
<H1>This is frame 2.</H1>
</BODY>
</HTML>
</xsl:document>
</FRAMESET>
</HTML>
Заметьте, однако, что этот пример работоспособен только в XSLT 1.1.
На момент написания книги в одном процессоре XSLT элемент <xsl:document>
был реализован: это Saxon версии 6.2.1 и старше, в котором свой элемент <saxon:output>
был изменен на <xsl:document>
. Но пока это единственный известный мне процессор XSLT, поддерживающий этот элемент.
Элемент <xsl:namespace-alias>: генерация таблиц стилей
Одна из основных задач XSLT состоит в преобразовании одних таблиц стилей в другие, хотя на первый взгляд это может быть неочевидно. Например, вам может потребоваться обработать длинные правила, которые нужно настроить непосредственно перед обработкой документов. И, как вы знаете, первоначально XSLT был представлен прежде всего для облегчения создания таблиц стилей объектов форматирования.
Но это порождает проблему: если вы обрабатываете таблицу стилей, полную таких элементов, как <xsl:template>
и <xsl:apply-templates>
, которые вы хотите видеть в результирующем документе — поскольку результирующий документ сам является таблицей стилей — как XSLT сможет отличить эти элементы буквального результата от элементов XSLT, которые он должен обработать?
Тут на помощь приходит элемент <xsl:namespace-alias>
, поскольку он позволяет использовать новое пространство имен для элементов в исходном документе и преобразовывать это