<TR>

   <TD><xsl:apply-templates select='NAME'/></TD>

   <TD><xsl:apply-templates select='MASS'/></TD>

   <TD><xsl:apply-templates select='DAY'/></TD>

   <TD><xsl:apply-templates select='DENSITY'/></TD>

  </TR>

 </xsl:template>

</xsl:stylesheet>

Вот результаты этого преобразования:

<HTML>

 <HEAD>

  <TITLE>

   Planets

  </TITLE>

 </HEAD>

 <BODY>

  <H1>

   Planets sorted by density

  </Н1>

  <TABLE>

   <TR>

    <TD>Planet</TD>

    <TD>Mass</TD>

    <TD>Day</TD>

    <TD>Density</TD>

   </TR>

   <TR>

    <TD>Venus</TD>

    <TD>.815</TD>

    <TD>116.75</TD>

    <TD>.943</TD>

   </TR>

   <TR>

    <TD>Mercury</TD>

    <TD>.0553</TD>

    <TD>58.65</TD>

    <TD>.983</TD>

   </TR>

   <TR>

    <TD>Earth</TD>

    <TD>1</TD>

    <TD>1</TD>

    <TD>1</TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

По умолчанию <xsl:sort> производит сортировку в алфавитном порядке, что означает, что «10» располагается перед «2». Для осуществления сортировки в числовом порядке установите атрибут типа данных в «number»:

<xsl:sort data-type='number' select='DENSITY'/>

Убывающий порядок сортировки задается установкой у элемента <xsl:sort> атрибута order в «descending». Можно также сортировать по значениям атрибута, например:

<xsl:apply-templates select='PLANETS>

 <xsl:sort select='@SIZE'/>

</xsl:apply-templates>

НОВОЕ В XSLT 2.0

Одним из важных преимуществ XSLT 2.0 является поддержка схем XML, и W3C планирует внести в XSLT 2.0 возможность сортировки по любому типу данных, определенному в схеме документа, так же, как сейчас можно сортировать по строкам или числам.

Сортировка по нескольким критериям

Стоит отметить, что при сортировке можно применять несколько критериев — для этого просто примените несколько элементов <xsl:sort>. Первый элемент <xsl:sort> отсортирует данные по основному критерию, следующий элемент — по следующему основному критерию и т.д. Вот, например, как внутри элемента <xsl:apply- templates> можно отсортировать планеты сначала по расстоянию, а затем по плотности (при этом планеты с одинаковым расстоянием от Солнца будут отсортированы по плотности):

<xsl:apply-templates>

 <xsl:sort select='DISTANCE'/>

 <xsl:sort select='DENSITY'/>

</xsl:apply-templates>

На этом мы заканчиваем обсуждение сортировки, и я перехожу к сопутствующей теме: нумерации.

Элемент <xsl:number>

При помощи элемента <xsl:number> узлу в результирующем документе присваивается очередной номер. Например, можно перенумеровать абзацы в контракте или строфы в поэме. Можно даже перенумеровать части документа несколькими уровнями, как, например, «Paragraph 3.2.5.1.» и т.п.

Элемент <xsl:number> обладает следующими атрибутами:

• level (необязательный). Определяет, как будут присваиваться последовательные числа. Устанавливается в «single» (один), «multiple» (несколько) или «any» (любой). Значение по умолчанию — «single»;

• count (необязательный). Определяет, какие узлы нужно подсчитывать. Устанавливается в образец;

• from (необязательный). Определяет точку начала отсчета. Устанавливается в образец;

• value (необязательный). Форматируемое число;

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

0

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

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