Чтение онлайн

ЖАНРЫ

Холзнер Стивен

Шрифт:

<?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>

Поделиться с друзьями: