要做出小星星, 每家旅館的星星數都不同, 第1個想到的之前做的副程式:
http://maxtellyou.blogspot.tw/2012/07/xsl-ntab.html
實際套用後發現, xsl 的變數內容(variable) 似乎沒有辦法直接使用 tag 在裡面, 所以多增加了一個副程式 outputSymbolsImage 專門來輸出圖片.
呼叫的 xsl 範例如下:
<xsl:call-template name="outputSymbolsImage">
<xsl:with-param name="maxNum"><xsl:value-of select="$hotel_star"/></xsl:with-param>
<xsl:with-param name="symbol"><xsl:value-of select="$hotel_icon"/></xsl:with-param>
<xsl:with-param name="symbolAlt"><xsl:value-of select="$hotel_star"/></xsl:with-param>
</xsl:call-template>
xsl 副程式如下:
<xsl:template name="outputSymbols">
<xsl:param name="currentNum">1</xsl:param>
<xsl:param name="symbol"><![CDATA[*]]></xsl:param>
<xsl:param name="maxNum"/>
<xsl:if test="$maxNum!=''"><xsl:if test="$currentNum <= $maxNum"><xsl:value-of select="$symbol" /></xsl:if><xsl:if test="$currentNum < $maxNum"><xsl:call-template name="outputSymbols">
<xsl:with-param name="currentNum"><xsl:value-of select="$currentNum + 1" /></xsl:with-param>
<xsl:with-param name="symbol"><xsl:value-of select="$symbol" /></xsl:with-param>
<xsl:with-param name="maxNum"><xsl:value-of select="$maxNum" /></xsl:with-param>
</xsl:call-template></xsl:if></xsl:if>
</xsl:template>
<xsl:template name="outputSymbolsImage">
<xsl:param name="currentNum">1</xsl:param>
<xsl:param name="symbol"><![CDATA[*]]></xsl:param>
<xsl:param name="symbolAlt"><![CDATA[icon]]></xsl:param>
<xsl:param name="maxNum"/>
<xsl:if test="$maxNum!=''"><xsl:if test="$currentNum <= $maxNum"><img><xsl:attribute name="src"><xsl:value-of select="$symbol" /></xsl:attribute></img></xsl:if><xsl:if test="$currentNum < $maxNum"><xsl:call-template name="outputSymbolsImage">
<xsl:with-param name="currentNum"><xsl:value-of select="$currentNum + 1" /></xsl:with-param>
<xsl:with-param name="symbol"><xsl:value-of select="$symbol" /></xsl:with-param>
<xsl:with-param name="symbolAlt"><xsl:value-of select="$symbolAlt" /></xsl:with-param>
<xsl:with-param name="maxNum"><xsl:value-of select="$maxNum" /></xsl:with-param>
</xsl:call-template></xsl:if></xsl:if>
</xsl:template>

沒有留言:
張貼留言