Перефразирую свой вопрос с пояснениями:
Реализовал страницу объекта в каталоге со вкладками с помощью css и html, без использования какого-либо скрипта (вкладки: описание/характеристики и комментарии). В каждой вкладке вывожу соответствующую информацию (вызываю через xsl-вызов). Так вот, во вкладке "описание" кроме самого описания хочу вывести еще часть характеристик (примерно 5-6 строк). А вот как это реализовать понятия не имею. Характеристики (полные) вызываются следующим вызовом:
<xsl:apply-templates select=".//group[@name = '&group-parameter;']" mode="table" />
Как-то можно ведь сделать так, чтобы выводились не все строки из характеристик во вкладке "описание", а как и писал выше, всего первые 5-6 строк (tr)? Полные характеристики вывожу во вкладке "характеристики" вызовом выше.
чтобы вывести часть характеристик
выпишете
<xsl:apply-templates select=".//group[@name = '&group-parameter;']" mode="table_short" />
и добавляете шаблон
<xsl:template match="group" mode="table_short">
<table class="object">
<thead>
<tr>
<th colspan="2">
<xsl:value-of select="concat(title, ':')" />
</th>
</tr>
</thead>
<tbody umi:element-id="{../../@id}">
<xsl:apply-templates select="property[position() < 6]" mode="table" />
</tbody>
</table>
</xsl:template>
соответственно, выводится будут только первые 5 property
тут нет волшебства, только код.
да, можно привязыватся и к порядку. Например? вывод каждого четногоproperty<xsl:apply-templates select="property[position() mod 2 = 0]" mode="table" />
Спасибо! Теперь понятно - сделал так:
<xsl:apply-templates select="property[position() = 5]" mode="table" />
<xsl:apply-templates select="property[position() = 6]" mode="table" />
<xsl:apply-templates select="property[position() = 7]" mode="table" />
<xsl:apply-templates select="property[position() = 11]" mode="table" />
<xsl:apply-templates select="property[position() = 12]" mode="table" />
Главное, что так я могу вызвать любую строку из таблицы.
admin помог мне, и я решил в долгу не оставаться - поделюсь личным опытом:
вариант, который я описал выше и думал, что решает мою задачу, оказался отнюдь не верным решением. А всё потому, что через property[position() = номер] когда делаешь вызовы, в разных категориях вызываются разные строки, т.е. категорий несколько, и характеристики у них разные, и содержимое этих характеристик тоже отличаются, соответственно таким вызовом везде получается всё неправильно. Другими словами, содержимое шаблона table_short подгоняешь под одну категорию, а в других категориях уже получается не совсем то, что надо.
Как я решил эту задачу? Всё очень просто - строки надо вызывать не по номеру позиции, а по названию (//property[@name = 'name']), т.е так, как ниже:
<xsl:apply-templates select="//property[@name = 'property_name']" mode="table" />
При таком вызове можно вызывать любую строку из любой категории в любом количестве, т.е., например, категория "ноутбуки" - вызываешь необходимые краткие характеристики; "смартфоны" - точно также, вызываешь свои характеристики; и т.д., и все эти строки в одном файле. Если какие-то строки совпадают в категориях, они выводятся в них, а если чего-то нет, то и выводиться эта строка не будет.