Функция XSLT / XPath month-from-DateTime (дата-время) работает не так, как ожидалось

#xpath #xslt-2.0 #saxon

#xpath #xslt-2.0 #saxon

Вопрос:

В моей таблице стилей XSLT я извлекаю значение текущего месяца, используя month-from-dateTime вот так

 <xsl:stylesheet version="2.0" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ...>
...
<xsl:value-of select="fn:month-from-dateTime(fn:current-dateTime())" />
  

Это возвращает 3 (для марта), но в соответствии с этой ссылкой XSL я бы ожидал, что она вернет значение с начальным нулем: 03 . Чего-нибудь мне не хватает? Я использую TransformerFactory из Saxon9HE.

Комментарии:

1. Давным-давно у нас была даже «каноническая» ссылка, чтобы рекомендовать не использовать w3schools в качестве ссылки.

2. На самом деле она возвращает целое число, а не строку, которую xsl:value-of затем преобразует в текстовый узел, используя стандартные правила преобразования целых чисел в строку, которые, конечно, не включают добавление начальных нулей.

Ответ №1:

Согласно документации W3C

fn:month-from-DateTime(xs: DateTime(«1999-05-31T13:20:00-05:00»)) возвращает 5.

Итак, мои ожидания были неверными.

Ответ №2:

Вы можете отформатировать возврат как:

 fn:format-number(fn:month-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00")), '00')
  

она вернет 05