2月27日
也许是在家的时候睡眠太好了(八点睡,八点起)。月满则亏,回到上海半个月了都没睡个囫囵觉。
就好比昨天,辗转反侧,翻来覆去,就是进入不了梦乡。
找了本艰深晦涩的数字电路教材翻阅,还是睡意全无,看来老办法不凑效了。
想起了某人说过,睡觉的时候啥都别想,就想着睡觉。我照做了,可没法集中精力,脑子里面像放电影一样,流过一幅幅鲜活的画面。
又想起某人说过,睡不着的时候就在心里默默数钱。我也照做了,数着数着想起自己也没啥钱。白天大盘暴跌,亏了不少,顿觉沮丧,还是睡不着。
后来我就放弃了,瞪着眼睛看天花板。
。。。
再后来就不知道怎么睡着了。
2月25日
虽然XPath2.0规范已经引入了fn:replace()函数,但无论是在老的XslTransform类 还是新的XslCompiledTransform 类都只支持XSLT1.0。
还好在网上找到一个可用replace template,递归实现的,做个笔记,以免忘记。
http://aspn.activestate.com/ASPN/Cookbook/XSLT/Recipe/65426
<xsl:template
name="replace-string">
<xsl:param
name="text"/>
<xsl:param
name="from"/>
<xsl:param
name="to"/>
<xsl:choose>
<xsl:when
test="contains($text, $from)">
<xsl:variable
name="before"
select="substring-before($text, $from)"/>
<xsl:variable
name="after"
select="substring-after($text, $from)"/>
<xsl:variable
name="prefix"
select="concat($before, $to)"/>
<xsl:value-of
select="$before"
disable-output-escaping="no"/>
<xsl:value-of
select="$to"
disable-output-escaping="no"/>
<xsl:call-template
name="replace-string">
<xsl:with-param
name="text"
select="$after"/>
<xsl:with-param
name="from"
select="$from"/>
<xsl:with-param
name="to"
select="$to"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="$text"
disable-output-escaping="no"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> |
是的,我回来了。
新的一年,我将继续为上海的软件事业呕心沥血.OH, YEAH!(地铁一号线之宝钢小胖老师对此语亦有贡献。)