XSLT
Шрифт:
<?xml version="1.0"?>
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="com.lotus.xsl.extensions.Redirect"
extension-element-prefixes="xalan">
.
.
.
Теперь при помощи атрибута
file
элемента <xalan:write>
<?xml version="1.0"?>
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="com.lotus.xsl.extensions.Redirect"
extension-element-prefixes="xalan">
.
.
.
<xalan:write file="newdoc.txt">
<xsl:text>Here's some text.</xsl:text>
</xalan:write>
В процессоре Saxon применяйте элемент
<output>
. Для этого элемента я использую префикс «saxon», который соответствует URI «http://icl.com/saxon»: <?xml version="1.0"?>
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://icl.com/saxon"
extension-element-prefixes="saxon">
.
.
.
<saxon:output file="newdoc.txt">
<xsl:text>Here's some text.</xsl:text>
</saxon:output>
To же можно сделать и в XT; в этом случае используйте пространство имен <http://www.jclark.com/xt» с элементом
<document>
и атрибут href
для задания имени нового файла: <?xml version="1.0"?>
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xt="http://www.jclark.com/xt"
extension-element-prefixes="xt">
.
.
.
<xt:document href="#">
<xsl:text>Here's some text.</xsl:text>
</xt:document>
Все это создало весьма запутанную ситуацию, поскольку каждый разрабатывал свои собственные решения. По этой причине в XSLT 1.1 для поддержки нескольких результирующих документов был представлен новый элемент,
<xsl:document>
, со следующими атрибутами: •
href
(обязательный).
Показывает, где будет помещен новый документ. Устанавливается в абсолютный или относительный URI, без идентификатора фрагмента; •
method
(необязательный). Определяет метод вывода, используемый для создания результирующего документа. Устанавливается в «xml», «html», «text» или QName, не являющееся NCName; •
version
(необязательный). Определяет версию выходного документа. Устанавливается в NMTOKEN; •
encoding
(необязательный). Устанавливает кодировку выходного документа. Устанавливается в строку; •
omit-xml-declaration
(необязательный). Устанавливается в «yes» или «no», чтобы опустить объявление XML или не отпускать; •
cdata-section-elements
(необязательный). Задает имена тех элементов, чье содержимое нужно вывести как разделы CDATA. Устанавливается в список QName, разделенных символами-разделителями; •
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="#">
<HTML>
<HEAD>
<TITLE>
Frame 1
</TITLE>
</HEAD>
<BODY>
Поделиться с друзьями: