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

ЖАНРЫ

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

Шрифт:

<xsl:apply-templates/>

</DATA>

 </xsl:template>

 <xsl:template match="PLANET">

<DENSITY>

<VALUE>

<xsl:value-of select="DENSITY"/>

</VALUE>

<xsl:apply-templates/>

</DENSITY>

 </xsl:template>

 <xsl:template match="NAME">

<NAME>

<xsl:value-of select="."/>

</NAME>

 </xsl:template>

 <xsl:template match="MASS">

<MASS>

<xsl:value-of select="."/>

</MASS>

 </xsl:template>

 <xsl:template match="RADIUS">

<RADIUS>

<xsl:value-of select="."/>

</RADIUS>

 </xsl:template>

 <xsl:template match="DAY">

<DAY>

<xsl:value-of select="."/>

</DAY>

 </xsl:template>

 <xsl:template match="DENSITY">

 </xsl:template>

 <xsl:template match="DISTANCE">

 </xsl:template>

</xsl:stylesheet>

Следующий

пример впервые был приведен в главе 5. В этом случае я только перечислил планеты из
planets.xml
, но в выходном документе я хотел видеть не просто фразу «The first three planets are: Mercury Venus Earth» (первые три планеты: Меркурий Венера Земля), a «The first three planets are: Mercury, Venus, and Earth.». Для этого я применил элементы
<xsl:if>
:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="PLANETS">

<DOCUMENT>

<TITLE>

The Planets

</TITLE>

<PLANETS>

The first three planets are: <xsl:apply-templates select="PLANET"/>

</PLANETS>

</DOCUMENT>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:value-of select="NAME"/>

<xsl:if test="position!=last">. </xsl:if>

<xsl:if test="position=last-1">and </xsl:if>

<xsl:if test="position=last">.</xsl:if>

 </xsl:template>

</xsl:stylesheet>

И

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

<?xml version="1.0" encoding="UTF-8"?>

<DOCUMENT>

 <TITLE>

The Planets

 </TITLE>

 <PLANETS>

The first three planets are: Mercury, Venus, and Earth.

 </PLANETS>

</DOCUMENT>
 

Хотя многие книги рассматривают главным образом преобразования из XML в HTML, важно понять, что преобразования XML-XML завоевывают все большую популярность, поэтому на них я также останавливаю ваше внимание.

Метод вывода: текст

Этот метод вывода представляет простой текст. В данном случае выходной документ являет собой только простой текст дерева документа. То есть процессор XSLT создает результирующее дерево, выводя строковое значение каждого текстового узла, без каких-либо сокращений.

Значением по умолчанию для атрибута

media-type
является «
text/plain
». Атрибут
encoding
устанавливает кодировку, используемую процессором XSLT для преобразования последовательностей символов в последовательности байтов. Заметьте, что если результирующий документ содержит символ, который не может быть представлен в выходной кодировке, процессор XSLT должен сгенерировать ошибку.

В листинге 6.4

planets.xml
преобразуется в простой текст при помощи метода текстового вывода.

Листинг 6.4. Преобразование в простой текст

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="text" indent="yes"/>

 <xsl:template match="PLANET">

<xsl:value-of select="NAME"/>

<xsl:text>'s mass is </xsl:text>

<xsl:value-of select="MASS"/>

<xsl:text> Earth masses. Its radius is </xsl:text>

<xsl:value-of select="RADIUS"/>

<xsl:text> miles. Its day is </xsl:text>

<xsl:value-of select="DAY"/>

<xsl:text> Earth days long.</xsl:text>

 </xsl:template>

</xsl:stylesheet>

И вот результат — просто чистый текст, никакой разметки, никаких пропущенных символов, никаких инструкций обработки:

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