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


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

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

До сих пор материал книги был достаточно очевиден, за исключением одного: несколько загадочных образцов выбора (match pattern). Мы работали с различными образцами выбора, такими как «/PLANETS» в элементах

<xsl:template>
, не предлагая систематического объяснения того, как в действительности работают эти образцы, — как в этом случае:

<xsl:template match="/PLANETS">

 <HTML>

  <HEAD>

   <TITLE>

    The Planets Table

   </TITLE>

  </HEAD>

  <BODY>

   .

   .

   .

  </BODY>

 </HTML>

</xsl:template>

В этой главе мы рассмотрим все необходимое, что нужно знать для создания образцов выбора в XSLT. Образцы выбора применяются в элементах

<xsl:template>
,
<xsl:key>
и
<xsl:number>
; с элементом
<xsl:template>
мы работали с самого начала книги, элемент
<xsl:key>
мы увидим в главе 9 и элемент
<xsl:number>
— в главе 5. В частности, для выбора по образцу у элементов
<xsl:template>
и
<xsl:key>
используется атрибут
match
, а у элемента
<xsl:number>
— атрибуты
count
и
from
.

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

select
таких элементов, как
<xsl:apply-templates>
,
<xsl:value-of>
,
<xsl:for-each>
и
<xsl:copy-of>
. Здесь важно отметить один момент: атрибут
select
этих элементов обладает большими возможностями, чем атрибуты
match
,
count
и
from
элементов
<xsl:template>
,
<xsl:key>
и
<xsl:number>
, потому что в
select
можно использовать полные выражения XPath, а не только образцы выбора.

Образцы выбора являются подмножеством выражений XPath, то есть все образцы выбора являются допустимыми выражениями XPath, но не все выражения XPath являются образцами выбора. Единственные выражения XPath, которые могут быть образцами, — это выражения, возвращающие набор узлов (даже набор, состоящий из одного узла) и использующие пути, которые задают только дочерние узлы или узлы атрибутов.

Образцы выбора определены в самой рекомендации XSLT, в то время как выражения XPath определены в рекомендации XPath (www.w3.org/TR/xpath); тем не менее, эти рекомендации совместимы, потому что все образцы выбора являются одновременно выражениями XPath.

СОЗДАНИЕ ПОЛНЫХ ВЫРАЖЕНИЙ XPATH

В главе 7 «Работа и изучение XPath» показано, как создавать полные выражения XPath. Полные выражения XPath можно применять в XSLT в следующих местах: в атрибуте select элементов <xsl:apply-templates>, <xsl:value-of>, <xsl:for-each>, <xsl:param>, <xsl:variable>, <xsl:with-param>, <xsl:copy-of> и <xsl:sort>; в значениях шаблонов атрибутов; в атрибуте test элементов <xsl:if> и <xsl:when>; в значении атрибута элемента <xsl:number> и в предикатах образцов выбора.

Чтобы еще больше все усложнить, следует сказать, что выражения XPath можно использовать в специальной, необязательной части (и только в этой части) образцов выбора: в предикатах. Как мы увидим в этой главе, предикаты — это выражения XPath, которые вычисляются либо в значения «истина/ложь», либо в числа, заключаемые в квадратные скобки, [ и ]. Например, образец

PLANET[NAME="Venus"]
выбирает дочерние узлы
<PLANET>
контекстного узла, у которых есть дочерние узлы
<NAME>
с текстом «Venus». Выражения внутри [ и ] представляют собой настоящие выражения XPath с известными ограничениями, которые будут рассмотрены в этой главе.

Безусловно, для создания образцов выбора необходим опыт, поэтому в данной главе приводится много примеров.

MICROSOFT И НЕСТАНДАРТНЫЕ ОБРАЗЦЫ ВЫБОРА

Microsoft поддерживает образцы выбора в своем процессоре XML MSXML3, но есть еще кое-что, о чем вам следует знать: с образцами выбора Microsoft использует также весьма много нестандартного, не используемого W3C синтаксиса. В этой главе я собираюсь придерживаться официальной, W3C, версии, и если вам доведется читать документацию Microsoft об образцах выбора, имейте в виду, что многое из этой документации относится только к реализации Microsoft.