я добавил новый шаблон для <PLANETS>, что говорит процессору о том, что следует продолжать поиск дочерних узлов:

<?xml version='1.0'>

<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:template match='/'>

  <HTML>

   <xsl:apply-templates/>

  </HTML>

 </xsl:template>

 <xsl:template match='PLANETS'>

  <xsl:apply-templates/>

 </xsl:template>

 .

 .

 .

Теперь можно добавить еще один шаблон для следующего уровня, включающего элементы <PLANET>. В этом случае я просто заменю каждый элемент <PLANET> элементом буквального результата <P>Planet</P> (листинг 2.3).

Листинг 2.3. Использование <xsl:apply-templates/>

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:template match='/'>

  <HTML>

   <xsl:apply-templates/>

  </HTML>

 </xsl:template>

 <xsl:template match='PLANETS'>

  <xsl:apply-templates/>

 </xsl:template>

 <xsl:template match='PLANET'>

  <P>

   Planet

  </P>

 </xsl:template>

</xsl:stylesheet>

Вот результат применения этой таблицы стилей:

<HTML>

 <Р>

  Planet

 </Р>

 <Р>

  Planet

 </Р>

 <P>

  Planet

 </Р>

</HTML>

Как видите, от элемента <PLANETS> ничего не осталось. Все, что осталось, — три элемента буквального результата <P>Planet</P>, которые заменили три элемента <PLANET>.

ПРОПУСК АТРИБУТА SELECT

Если опустить атрибут select, будут обрабатываться только дочерние узлы текущего узла, не включающие атрибуты или узлы пространств имен, так как они не считаются дочерними. Если вы хотите обрабатывать узлы этих видов, необходимо использовать атрибут select, как будет рассмотрено в главе 3.

Все это занимательно, но малопригодно практически. Было бы гораздо лучше, если бы мы, например, могли обратиться к фактическому значению каждого элемента (такому как имя каждой планеты) и работать с этими данными. И это, конечно, возможно.

Доступ к значениям узлов

Получить доступ к значению узла можно при помощи элемента <xsl:value-of>, у которого есть два возможных атрибута:

• select (обязательный). Выходное значение. Устанавливается в выражение;

• disable-output-escaping (необязательный). Указывает, что символы, такие как >, будут отправляться в выходной поток как есть, не изменяясь на &gt;. Значения этого атрибута: yes или no.

Элемент <xsl:value-of> всегда пуст.

При помощи атрибута select можно указать, значение какого узла требуется получить. Например, вам может потребоваться значение узла <NAME> в каждом элементе <PLANET>, то есть текст, заключенный в этом узле. Это можно сделать следующим образом (листинг 2.4).

Листинг 2.4. Использование <xsl:value-of>

<?xml version='1.0'>

<xsl:stylesheet version='1.0'

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

 <xsl:template match='/'>

  <HTML>

   <xsl:apply-templates/>

  </HTML>

 </xsl:template>

 <xsl:template match='PLANETS'>

  <xsl:apply-templates/>

 </xsl:template>

 <xsl:template match='PLANET'>

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

0

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

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