我有一个日期后缀功能,可以添加带有日期的st,nd,rd,th后缀
<xsl:template name="date_suffix">
<xsl:param name="date" />
<xsl:choose>
<xsl:when test="$date > 10 and $date < 14">th</xsl:when>
<xsl:when test="($date mod 10) = 1">st</xsl:when>
<xsl:when test="($date mod 10) = 2">nd</xsl:when>
<xsl:when test="($date mod 10) = 3">rd</xsl:when>
<xsl:otherwise>th</xsl:otherwise>
</xsl:choose>
</xsl:template>
我这样称呼它
<xsl:template match="date">
<xsl:value-of select="." />
<xsl:call-template name="date_suffix">
<xsl:with-param name="date" seelect="." />
</xsl:call-template>
</xsl:template>
这是我的XAML片段
<dob>
<date>23</date>
<month>Dec</month>
<year>1987</year>
</dob>
问题是我看到23th
而我期待23rd
。当choose
when
直接在<xsl:template match="date">
块中使用时,{{1}},{{1}}可以正常工作,但当被称为命名模板
答案 0 :(得分:1)
尝试将seelect
更改为select
?
答案 1 :(得分:0)
如果您不限于XSL版本1.0,那么使用具有强类型参数的函数而不是命名模板可能会有所帮助:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xyz="urn:mystuff"
version="2.0">
<xsl:output encoding="utf-8" indent="yes" method="xml" />
<xsl:template match="date">
<xsl:value-of select="." />
<xsl:value-of select="xyz:date_suffix(.)" />
</xsl:template>
<xsl:function name="xyz:date_suffix" as="xs:string">
<xsl:param name="date" as="xs:integer"/>
<xsl:choose>
<xsl:when test="($date mod 10) = 1">st</xsl:when>
<xsl:when test="($date mod 10) = 2">nd</xsl:when>
<xsl:when test="($date mod 10) = 3">rd</xsl:when>
<xsl:otherwise>th</xsl:otherwise>
</xsl:choose>
</xsl:function>
</xsl:stylesheet>