=> Главная База Знаний Xslt Создание образцов выбора


Создание образцов выбора

Создание образцов выбора

Как вы могли ожидать, исходя из того, что "

child::MASS
" можно представить в виде "
MASS
" и применения шаблонов, таких как "
/
", "
/PLANETS
" и т.д., вплотную познакомиться с созданием образцов выбора не так-то просто — этому посвящена вся глава 4.

Образцы выбора (match pattern) являются подмножеством полного языка XPath, их можно использовать в элементах

<xsl:template
>,
<xsl:key>
и
<xsl:number>
. В частности, в образец можно установить атрибут match у
<xsl:template>
и
<xsl:key>
, и атрибуты
count
и
from
элемента
<xsl:number>
. В следующем списке приведен ряд примеров образцов выбора, много других примеров будет показано в главе 4 при подробном обсуждении использования XPath для выбора узлов и атрибутов:

• "

/
" выбирает корневой узел;

• "

*
" выбирает элементы узлов (но не всех узлов, как зачастую ошибочно полагают);

• "

PLANET
" выбирает элементы
<PLANET>
;

• "

PLANET/MASS
" выбирает все элементы
<MASS>
, дочерние для элемента
<PLANET>
;

• "

//PLANET
" выбирает все элементы
<PLANET>
, производные от корневого узла;

• "

.
" выбирает текущий узел (технически это не образец выбора, а выражение XPath, как мы увидим в главе 7).

Образцы можно также использовать в атрибуте

select
элементов
<xsl:apply-templates>
,
<xsl:value-of>
,
<xsl:for-each>
,
<xsl:copy-of>
и
<xsl:sort>
; фактически атрибут
select
этих элементов может содержать полные выражения XPath, а не только образцы выбора. Атрибут
select
элемента
<xsl:value-of>
определяет дочерний узел, значение которого нужно получить:

<xsl:template match="PLANET">

 <TR>

  <TD><xsl:value-of select="NAME"/></TD>

  <TD><xsl:value-of select="MASS"/></TD>

  <TD><xsl:value-of select="RADIUS"/></TD>

  <TD><xsl:value-of select="DAY"/></TD>

 </TR>

</xsl:template>

Теперь пора воспользоваться атрибутом

select
элемента
<xsl:apply-templates>
, поскольку это даст нам возможность указать, какой шаблон использовать и когда.