Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Почему, по Вашему мнению, данная задача лежит вне области применения XSLT?Я считаю, что это антиреклама. Ну нужно публиковать такие примеры, ибо они только больше оттолкнут людей от XSLT. Его критикуют за громоздкий синтаксис, и тут мы всю эту проблему видим в полный рост. Разве кто-то из критиков восхитится? Нет, он скажет: «во-во, посмотрите на это убожество!».
…
<xsl:variable name="maxfont">2</xsl:variable>
<xsl:variable name="minfont">1</xsl:variable>
…
<xsl:variable name="size" select="$minfont + $font div 100 * ((weight - $theMin) * $perc1)"/>
<a href="/tag/{name}" style="font-size: {$size}em" title="weight: {weight}">
…
* This source code was highlighted with Source Code Highlighter.
<html>
<body>
<div style="width: 300px;">
<a href="/tag/биология" style="font-size: 1.05263em;" title="weight: 2">биология</a>
<a href="/tag/русский язык" style="font-size: 2em;" title="weight: 20">русский язык</a>
<a href="/tag/алгебра" style="font-size: 1.63158em;" title="weight: 13">алгебра</a>
<a href="/tag/география" style="font-size: 1.05263em;" title="weight: 2">география</a>
<a href="/tag/физкультура" style="font-size: 2em;" title="weight: 20">физкультура</a>
<a href="/tag/астрономия" style="font-size: 1em;" title="weight: 1">астрономия</a>
<a href="/tag/правоведение" style="font-size: 1.31579em;" title="weight: 7">правоведение</a>
<a href="/tag/история" style="font-size: 1.68421em;" title="weight: 14">история</a>
</div>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
≥
<xsl:variable name="maxfont">32</xsl:variable>
<xsl:variable name="minfont">16</xsl:variable>
…
<xsl:variable name="size" select="($minfont + $font div 100 * ((weight - $theMin) * $perc1)) * 0.06"/>
<a href="/tag/{name}" style="font-size: {$size}em" title="weight: {weight}">
…
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="cloud">
<xsl:variable name="maxfont">26</xsl:variable>
<xsl:variable name="minfont">11</xsl:variable>
<xsl:variable name="theMax" select="row[not(weight < ../row/weight)]/weight" />
<xsl:variable name="theMin" select="row[not(weight > ../row/weight)]/weight" />
<div style="width:300px">
<xsl:apply-templates select="row">
<xsl:with-param name="minfont" select="$minfont"/>
<!-- <xsl:with-param name="pixInWeight" select="($maxfont - $minfont) div ($theMax - $theMin)"> -->
<xsl:with-param name="pixInWeight">
<xsl:choose>
<xsl:when test="($theMax - $theMin)=0">0</xsl:when>
<xsl:otherwise>
<xsl:value-of select="($maxfont - $minfont) div ($theMax - $theMin)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:apply-templates>
</div>
</xsl:template>
<xsl:template match="row">
<xsl:param name="minfont"/>
<xsl:param name="pixInWeight"/>
<xsl:variable name="size" select="$minfont + floor(weight*$pixInWeight)"/>
<a href="/tag/{name}" style="font-size: {$size}px">
<xsl:value-of select="name" />
</a>
<xsl:if test="position() != last()"><xsl:text> </xsl:text></xsl:if>
</xsl:template>
</xsl:stylesheet>
Облако тегов средствами XSLT