在XSLT 1.0中沒有任何正則表達式,所以恐怕模式匹配不可行。
我不清楚<srcTime>23:00</srcTime>
應該是合法的嗎?如果是,嘗試:
<dstTime>
<xsl:if test="string-length(srcTime) = 4 or
string-length(srcTime) = 5">
<xsl:variable name="hour" select="substring(srcTime, 1, 2)" />
<xsl:if test="$hour >= 0 and 24 > $hour">
<xsl:variable name="minute">
<xsl:choose>
<xsl:when test="string-length(srcTime) = 5 and
substring(srcTime, 3, 1) = ':'">
<xsl:value-of select="substring(srcTime, 4, 2)" />
</xsl:when>
<xsl:when test="string-length(srcTime) = 4">
<xsl:value-of select="substring(srcTime, 3, 2)" />
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test="$minute >= 0 and 60 > $minute">
<xsl:value-of select="concat($hour, ':', $minute)" />
</xsl:if>
</xsl:if>
</xsl:if>
</dstTime>
如果不是,和四位數字是當時的法律的唯一的事情:
<dstTime>
<xsl:if test="string-length(srcTime) = 4">
<xsl:variable name="hour" select="substring(srcTime, 1, 2)" />
<xsl:if test="$hour >= 0 and 24 > $hour">
<xsl:variable name="minute" select="substring(srcTime, 3, 2)" />
<xsl:if test="$minute >= 0 and 60 > $minute">
<xsl:value-of select="concat($hour, ':', $minute)" />
</xsl:if>
</xsl:if>
</xsl:if>
</dstTime>
可以幫助但注意到2400是無效的日期。中午是1200,午夜是0000. – dacracot 2008-09-26 23:40:15