2009年12月23日 星期三

XSL 中 checkbox 如何設定 checked

設定方式如下:
<input type="checkbox" name="test" value="checked" checked="y"/>

XSL 中的空白字元

XSL 中使用 &nbsp; 新增空白字元會出現錯誤,可以改用 &#160; 取代。

XSL 中使用一組不固定資料來判斷另一組資料的輸出值

XML 如下
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="key_sample.xsl" ?>
</document>
<test id="1" name="a">
<test id="2" name="b">
<test id="3" name="c">
<test id="4" name="d">

<data>
<item>
<id>1</id>
<value>value1</value>
<testid>1</testid>
</item>
<item>
<id>2</id>
<value>value2</value>
<testid>1</testid>
</item>
<item>
<id>3</id>
<value>value3</value>
<testid>3</testid>
</item>
<item>
<id>4</id>
<value>value4</value>
<testid>2</testid>
</item>
</data>
</document>


XSL 如下
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:key name="test-search" match="test" use="@id"/>
<xsl:template match="document">
<HTML>
<BODY>
<xsl:for-each select="data/item">
<div>
id=<xsl:value-of select="id" />
value=<xsl:value-of select="value" />
<xsl:for-each select="key('test-search', testid)">
test name=<xsl:value-of select="@name"/>
</xsl:for-each>
</div>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>

輸出結果如下
id=1 value=value1 test name=a
id=2 value=value2 test name=a
id=3 value=value3 test name=c
id=4 value=value4 test name=b

2009年12月18日 星期五

PHP 時間週相關函式

// 傳回指定年份有多少週
function year_week_num($year){
$days = (checkdate(2, 29, $year) ? 366 : 365) + date("w", mktime(0,0,0,1,1 ,$year));
$mod = $days % 7;
return ($days-$mod) / 7 + ($mod>0 ? 1 : 0);
}

// 傳回指定年份第幾週開始及結束的日期
function year_week($year, $weekno){
if($year<1972) t =" (6-date(" t1 = "$year-01-01" t2 =" date("> year_week_num($year)) $weekno = year_week_num($year);

$t = (($weekno-2)*7 + (7-date("w", mktime(0,0,0,1,1, $year)))) * 86400;

$t1 = date("Y-m-d", mktime(0,0,0,1,1, $year) + $t);
$t2 = date("Y-m-d", mktime(0,0,0,1,1, $year) + $t+86400*6);
return array($t1, $t2);
}