<BASEFONT>, <BR>, <COL>, <FRAME>, <HR>, <IMG>, <INPUT>, <ISINDEX>, <LINK>, <META> и <PARAM>.) Метод вывода HTML должен распознавать названия элементов HTML независимо от регистра.

В соответствии с W3C, метод вывода HTML не должен скрывать содержимое элементов <SCRIPT> или <STYLE>. Например, следующий элемент буквального результата:

<SCRIPT>

 if (х &lt; у) {...}

</SCRIPT>

или следующий, использующий раздел CDATA:

<SCRIPT>

 <![CDATA[if (х < у) {...}]]>

</SCRIPT>

должен быть преобразован в:

<SCRIPT>

 if (х < у) {...}

</SCRIPT>

Метод вывода HTML не должен также подавлять символы <, встречающиеся в значениях атрибутов.

При установке метода вывода в HTML процессор может учесть атрибут выравнивания. Если этот атрибут установлен в yes, процессор XSLT может добавить (или удалить) символы- разделители для выравнивания результирующего документа, поскольку это не влияет на отображение документа в браузере. Для метода вывода HTML значением по умолчанию является «yes».

Как вы могли предположить, метод вывода HTML завершает инструкции обработки при помощи >, а не ?>, а также поддерживает отдельные атрибуты, как и HTML. Например, тег

<TD NOWRAP='NOWRAP'>

будет преобразован в:

<TD NOWRAP>

Для этого метода можно установить атрибут media-type, значением по умолчанию для которого является «text/html». Метод HTML не должен убирать символ &, который появляется в значении атрибута, если сразу за ним следует фигурная скобка. Атрибут encoding задает используемую кодировку. Если присутствует элемент <HEAD>, этот метод вывода должен добавить элемент <МЕТА> сразу же после тега <HEAD>, определяя кодировку символов:

<HEAD>

 <МЕТА http-equiv='Content-Type' content='text/html; charset=utf-8'>

 .

 .

 .

При помощи атрибутов doctype-public или doctype-system можно вывести объявление типа документа непосредственно перед первым элементом, как мы увидим при преобразовании XML в XHTML.

Таковы правила вывода HTML. Ниже приведен пример преобразования из XML в HTML с небольшими отклонениями. В этом случае таблица стилей будет фактически генерировать код JavaScript, демонстрируя создание JavaScript при помощи XSLT. В частности, мы прочитаем planets.xml и создадим новый документ HTML, отображающий три кнопки — по одной для каждой из трех планет в planets.xml. При щелчке на кнопке на странице будет выведена масса соответствующей планеты.

Все, что нам понадобится (листинг 6.1), — это два элемента <xsl:for-each>: один для прохода в цикле по трем планетам и создания для каждой кнопки HTML; и один для прохода по планетам и создания для каждой функции JavaScript. В качестве имен функций JavaScript я воспользуюсь названием планет; при вызове функция выведет массу соответствующей планеты. Заметьте, что для создания нужного кода JavaScript нужно всего лишь применить элемент <xsl:value-of> для получения названий и масс планет. Я также применю два новых элемента XSLT, <xsl:element> и <xsl:attribute-set>, которые мы рассмотрим позже в этой главе, для создания нового элемента и задания для него набора атрибутов.

Листинг 6.1. Преобразование в JavaScript

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:output method='html'/>

 <xsl:template match='/PLANETS'>

  <HTML>

   <HEAD>

    <TITLE>

     The Mass Page

    </TITLE>

    <SCRIPT LANGUAGE='javascript'>

     <xsl:for-each select='PLANET'>

      <xsl:text>

       function </xsl:text><xsl:value-of select='NAME'/><xsl:text>() {

        display.innerHTML = 'The mass of </xsl:text>

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

        <xsl:text> equals </xsl:text>

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

        <xsl:text> Earth masses.'</xsl:text>

       }

     </xsl:for-each>

    </SCRIPT>

   </HEAD>

   <BODY>

    <CENTER>

     <H1>The Mass Page</H1>

    </CENTER>

    <xsl:for-each select='PLANET'>

     <P/>

     <xsl:element name='input' use-attribute-sets='attribs'/>

    </xsl:for-each>

    <P/>

    <P/>

    <DIV ID='display'></DIV>

   </BODY>

  </HTML>

 </xsl:template>

Вы читаете XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату