Reference/citation 用于 xslt 1.0 儒略日计算

Reference/citation for xslt 1.0 Julian day calculations

看过 Date operations on xsl 1.0

<xsl:template name="JDN">
<xsl:param name="date"/>
<xsl:param name="year" select="substring($date, 1, 4)"/>
<xsl:param name="month" select="substring($date, 6, 2)"/>
<xsl:param name="day" select="substring($date, 9, 2)"/>
<xsl:param name="a" select="floor((14 - $month) div 12)"/>
<xsl:param name="y" select="$year + 4800 - $a"/>
<xsl:param name="m" select="$month + 12*$a - 3"/>
<xsl:value-of select="$day + floor((153*$m + 2) div 5) + 365*$y + floor($y div 4) - floor($y div 100) + floor($y div 400) - 32045" />

我想参考更具体的内容,而不是堆栈溢出答案...它似乎有效!....我相信它基于某些标准数学模型日期时间...是否有某种规范的 XSLT 1.0 实现?发表在书上或图书馆?即我怎么知道没有错字?我认为在 XSLT 中实现模型非常重要,我不想重新发明轮子。

我根据朱利安日维基百科条目中发布的算法编写了上述模板。他们后来改用了另一种算法。如果想要原始算法的出处,需要浏览文章的修改历史。

除万维网联盟 (W3C) 发布的 XSLT 规范外,没有 "canonical" 或 "authoritative" XSLT 来源。任何有权访问该算法的人都可以自己检查实现的正确性(强烈建议这样做,因为 他们在 Internet 上找到的任何东西)。

我在 O'Reilly 的书中看到过这个模板:https://www.oreilly.com/library/view/xslt-cookbook-2nd/0596009747/ch04.html(这当然不能保证它是正确的,但在更正式的日期时间库中也可能存在错误。)

如果您受困于 XSLT 1.0,如果您的处理器支持 EXSLT 日期模块 (http://exslt.org/date/),您也可以使用它。 MSXML 允许您根据版本插入 Javascript 或 C# 代码。