<P>

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

  </P>

 </xsl:template>

</xsl:stylesheet>

Значение узла, содержащего текст, будет просто текстом, поэтому результат применения этой таблицы стилей к planets.xml следующий:

<HTML>

 <P>Mercury</P>

 <P>Venus</P>

 <P>Earth</P>

</НТМL>

АТРИБУТ DISABLE-OUTPUT-ESCAPING

Атрибут disable-output-escaping элемента <xsl:value-of> более подробно рассмотрен в главе 3.

Предположим, нам нужно осуществить нечто более сложное — например, преобразовать данные из planets.xml в HTML-таблицу в новом файле planets.html (рис. 2.1), как мы видели в главе 1. Теперь это можно сделать при помощи <xsl:value-of>.

Рис. 2.1. Planets.html в Internet Explorer

Здесь важно учесть один момент. В planets.xml формально не задан порядок элементов <MASS>, <RADIUS>, <DAY> и <DISTANCE>, однако важно, чтобы эти элементы обрабатывались в определенном порядке в соответствии с заголовками таблицы. Поэтому я буду использовать элементы <xsl:value-of> в том порядке, в котором они требуются в таблице HTML.

Таким образом, чтобы создать HTML-таблицу, изображенную на рис. 2.1, я сначала ищу элемент <PLANETS> и затем заменяю его на HTML для создания самой HTML-таблицы. Элемент <PLANETS> — дочерний элемент корневого узла, и поскольку на корневой узел можно сослаться через «/», на элемент <PLANETS> можно сослаться непосредственно через '/PLANETS', без необходимости предварительно применять шаблон для корневого узла. Это пример выражения XPath, большое число подобных мы также увидим в главе 4.

Ниже приведен пример того, как я начал создавать HTML-таблицу путем выбора элемента <PLANETS> непосредственно как '/PLANETS' — заметьте, что для применения шаблонов к любым дочерним узлам <PLANETS> я использовал <xsl:apply-templates>:

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:template match='/PLANETS'>

  <HTML>

   <HEAD>

    <TITLE>

     The Planets Table

    </TITLE>

   </HEAD>

   <BODY>

    <H1>

     The Planets Table

    </H1>

    <TABLE BORDER='2'>

     <TR>

      <TD>Name</TD>

      <TD>Mass</TD>

      <TD>Radius</TD>

      <TD>Day</TD>

     </TR>

     <xsl:apply-templates/>

    </TABLE>

   </BODY>

  </HTML>

 </xsl:template>

 .

 .

 .

Каждый дочерний узел <PLANET> имеет дочерние узлы <NAME>, <MASS>, <RADIUS> и <DAY>, и я хочу обрабатывать их именно в таком порядке — для того чтобы они добавлялись в HTML-таблицу в соответствии с заголовками таблицы. Для задания порядка их обработки я поместил элементы <xsl:value-of> (листинг 2.5).

Листинг 2.5. planets.xsl

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:template match='/PLANETS'>

  <HTML>

   <HEAD>

    <TITLE>

     The Planets Table

    </TITLE>

   </HEAD>

   <BODY>

    <H1>

     The Planets Table

    </H1>

    <TABLE BORDER='2'>

     <TR>

      <TD>Name</TD>

      <TD>Mass</TD>

      <TD>Radius</TD>

      <TD>Day</TD>

     </TR>

     <xsl:apply-templates/>

    </TABLE>

   </BODY>

  </HTML>

 </xsl:template>

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

0

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

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