parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

К сожалению не нашел в xslt функцию random() А так хотелось бы!

Slava 17.03.2005 02:42

После того, как открыл для себя в xslt функцию document() и захотелось еще одну: random(). А реализовать я хотел бы вот такую задумку:
допустим у меня есть xml со списком внутрисайтовых баннеров (кажется их называют "ушами"). Ну, например, такой:
<banner-list>
  <banner>
    <text>...</text>
    <image url="..."/>
    <link url="..."/>
  </banner>
  <banner>...</banner>
  ...
</banner-list>
И нужно, чтоб на странице показывался один баннер, случайно выбранный из списка. Тогда шаблон можно было бы написать вот таким:
<xsl:variable name="b-list" select="document(banner_list.xml)"/>

<xsl:template match="/">
<xsl:call-template name="banner">
  <xsl:with-param name="b-node"
select="$b-list/banner-list/banner[position()-1 = random(count(../banner))]"/>
</xsl:call-template>

<xsl:tempalte name="banner">
<xsl:param name="b-node"/>
<div>
  <img src="{$b-node/image/@url}"/><br/>
  <a href="{$b-node/link/@url}">
    <xsl:value-of select="$b-node/text"/>
  </a>
</div>
</xsl:template>
Может быть знающие люди подскажут, как можно реализовать это? Есть ли какой-нибудь обходной путь? И стоит ли?