要做出小星星, 每家旅館的星星數都不同, 第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>
沒有留言:
張貼留言