[作業]撰寫可以彈性選擇排序欄位的樣板函數 2010.10.24版面美化更新!

 

 

sort.xsl:

<?xml version="1.0" encoding="Big5"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!--主樣版-->
<xsl:template match="/" >
<HTML>
<HEAD><TITLE>xsl:sort+call-template 應用</TITLE></HEAD>
<BODY>
<CENTER>
<FONT SIZE="5" COLOR="BLUE">xsl:sort+call-template 應用</FONT>
</CENTER><HR/><P></P>
<!--使用 call-template 呼叫 樣版 sort_at-->
<!--使用 price 排序的call-template-->
<xsl:call-template name="sort_at">
<xsl:with-param name="select_fun">price</xsl:with-param>
<xsl:with-param name="data-type_fun">number</xsl:with-param>
<xsl:with-param name="order_fun">ascending</xsl:with-param>
</xsl:call-template>

<!--使用 title 排序的call-template-->
<xsl:call-template name="sort_at">
<xsl:with-param name="select_fun">title</xsl:with-param>
<xsl:with-param name="data-type_fun">text</xsl:with-param>
<xsl:with-param name="order_fun">descending</xsl:with-param>
</xsl:call-template>

<!--使用 author 排序的call-template-->
<xsl:call-template name="sort_at">
<xsl:with-param name="select_fun">author</xsl:with-param>
<xsl:with-param name="data-type_fun">text</xsl:with-param>
<xsl:with-param name="order_fun">ascending</xsl:with-param>
</xsl:call-template>
</BODY>
</HTML>
</xsl:template>

<xsl:template name="sort_at">
<xsl:param name="select_fun" />
<xsl:param name="data-type_fun" />
<xsl:param name="order_fun" />

<!--將 table 放到 樣版 sort_at 內 , 讓不同的排序方式分開-->
<TABLE bgcolor="DodgerBlue" align="center">
<!--新增一行表格,說明排序方式 -->
<TR bgcolor="gray">
<TD colspan="2">依 [<xsl:value-of select="$select_fun" />] 使用  [<xsl:value-of select="$order_fun" />] 排序</TD>
</TR>
<TR bgcolor="SkyBlue">
<TD>元素名稱</TD><TD>值</TD>
</TR>

<!--利用sort 配合傳入參數做排序排序-->
<xsl:apply-templates select="//book" >
<xsl:sort select="*[name(.)=$select_fun]" data-type="{$data-type_fun}" order="{$order_fun}" />
</xsl:apply-templates>

</TABLE>
<BR/>

</xsl:template>

<xsl:template match="book">

<xsl:for-each select="*">

<TR bgcolor="Wheat">
<TD><xsl:value-of select="name(.)"/></TD>
<TD><xsl:value-of select="."/></TD>
</TR>
</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

 

 

最後一版 : JavaScript 美化版

(Visited 19 times, 1 visits today)