<DENSITY UNITS='(Earth = 1)'>.943</DENSITY>

  <DISTANCE UNITS='million miles'>66.8</DISTANCE><!--B перигелии-- >

 </PLANET>

 .

 .

 .

Для того чтобы снова добавить эту инструкцию обработки, можно применить элемент <xsl:processing-instruction> (листинг 6.9). Пункты type и href в инструкции обработки, например <?xml-stylesheettype='text/xml' href='planets.xsl'?>, в действительности не являются атрибутами, поэтому их значения нужно устанавливать не при помощи <xsl:attribute>, а используя простой текст.

Листинг 6.9. Применение <xsl:processing-instruction>

<?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='/'>

  <xsl:processing-instruction name='xml-stylesheet'>

   <xsl:text>type='text/xml' href='planets.xsl'</xsl:text>

  </xsl:processing-instruction>

  <xsl:apply-templates/>

 </xsl:template>

 <xsl:template match='@*|node()'>

  <xsl:copy>

   <xsl:apply-templates select='@*|node()'/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Вот результат, где инструкция обработки <?xml-stylesheet?> снова на месте:

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

<?xml-stylesheet type='text/xml' href='planets.xsl'?>

<PLANETS>

 <PLANET>

  <NAME>Mercury</NAME>

  <MASS UNITS='(Earth = 1)'>.0553</MASS>

  <DAY UNITS='days'>58.65</DAY>

  <RADIUS UNITS='miles'>1516</RADIUS>

  <DENSITY UNITS='(Earth = 1)'>.983</DENSITY>

  <DISTANCE UNITS='million miles'>43.4</DISTANCE><!--B перигелии-- >

 </PLANET>

 <PLANET>

  <NAME>Venus</NAME>

  <MASS UNITS='(Earth = 1)'>.815</MASS>

  <DAY UNITS='days'>116.75</DAY>

  <RADIUS UNITS='miles'>3716</RADIUS>

  <DENSITY UNITS='(Earth = 1)'>.943</DENSITY>

  <DISTANCE UNITS='million miles'>66.8</DISTANCE><!--At perihelion-- >

 </PLANET>

 .

 .

 .

Элемент <xsl:document>: создание нескольких выходных документов

В рабочем проекте XSLT 1.1 был представлен новым элемент, <xsl:document>, предназначенный для поддержки нескольких выходных документов, — и, скорее всего, этот элемент будет добавлен в XSLT 2.0. Он имеет следующие атрибуты:

• 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> вывода. Устанавливается в строковое значение;

• encoding (необязательный). Задает кодировку символов. Устанавливается в строковое значение;

• indent (необязательный). Определяет выравнивание вывода для отображения структуры вложенности. Устанавливается в «yes» или «no»;

• media-type (необязательный). Задает тип MIME вывода. Устанавливается в строковое значение;

• standalone (необязательный). Определяет, нужно ли включать в вывод отдельное объявление, и если да, задает его значение. Устанавливается в «yes» или «no».

Этот элемент содержит тело шаблона.

В следующем примере, основанном на упрощенной таблице стилей, я создаю в документе HTML две рамки (frame), и два HTML-документа, которые будут в них отображаться, frame1.html и frame2.html. Первую рамку и документ, который в ней появится, frame1.html, я создам при помощи <xsl:document> следующим образом (заметьте, что здесь я устанавливаю атрибут version в «1.1», поскольку мы используем возможность, входящую только в рабочий проект XSLT 1.1, но «1.1», вероятно, не будет правильным значением атрибута version в долгосрочном периоде; если элемент <xsl:document> будет включен в XSLT 2.0, версию

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

0

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

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