Метод вывода: текст
Метод вывода: текст
Метод текстового вывода предназначен не только для создания простого текста: он применяется для любого основанного на тексте формата, не являющегося XML или HTML. Например, с его помощью можно создавать документы в формате RTF (Rich Text Format). В этом формате для задания форматирования документов используются встроенные текстовые коды — их можно поместить в документы самостоятельно при помощи метода текстового вывода.
В листинге 2.6 приведен пример таблицы стилей (которую мы увидим в главе 6), преобразующей planets.xml в planets.rtf.
Листинг 2.6. Таблица стилей RTF
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/PLANETS">{ tf1ansideff0{fonttbl {\fcharset0 Courier New:}}
viewkind4uc1pardlangl033 The Planets Tablepar0
Name ab Mass ab Rad. ab Daypar
<xsl:apply-templates/>
par
}</xsl:template>
<xsl:template match="PLANET">
<xsl:value-of select="NAME"/>
ab
<xsl:value-of select="MASS"/>
ab
<xsl:value-of select="RADIUS"/>
ab
<xsl:value-of select="DAY"/>
ab
par
</xsl:template>
</xsl:stylesheet>
Результирующий документ RTF, planets.rtf, изображен на рис. 2.3 в Microsoft Word 2000. Обратите внимание на то, что я установил метод вывода в текст в элементе <xsl:output method="text">:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/PLANETS">{ tf1ansideff0{fonttbl(\fcharset0 Courier New;}}
viewkind4uclpardlang1033 The Planets Tablepar
.
.
.
Рис. 2.3. Planets.rtf в Microsoft Word
Вы также могли заметить, что я принялся записывать коды RTF сразу же после элемента <xsl:template> — я сделал так потому, что в документах RTF коды RTF должны появляться с самого начала. Если бы я решил вставлять коды RTF на следующей строке — например, так:
<?xml versions="1.0">
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/PLANETS">
{ tf1ansideff0{fonttbl{\fcharset0 Courier New;}}
viewkind4uc1pardlang1033 The Planets Tablepar
.
.
.
то выходной файл RTF начинался бы с символа новой строки, что вызвало бы ошибку приложения для работы с файлами RTF — такого, как Microsoft Word. Более подробно RTF и другие форматы будут рассмотрены в главе 6.