Как преобразовать текст в дату, а затем получить значение года? - PullRequest
7 голосов
/ 17 марта 2012

Необходимо преобразовать текстовое значение `2012-03-19 'в тип даты, а затем извлечь компонент года.

<xsl:variable name="dateValue" select="2012-03-19"/>
<xsl:variable name="year" select="year-from-date(date($dateValue))"/>

Я использую Saxon 2.0, но жалуется на функцию dateне существует;Я просмотрел документацию Саксона и не смог найти эту функцию, так что это определенно проблема, но я не могу найти подходящую замену.

1 Ответ

8 голосов
/ 17 марта 2012

Я не думаю, что date() должна быть функцией, вам нужен тип данных xs:date().

Добавьте пространство имен xs, а затем префикс xs:date().

Следующая таблица стилей, использующая любой правильно сформированный ввод XML, выдаст 2012:

<xsl:stylesheet version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
    <xsl:variable name="dateValue" select="'2012-03-19'"/>
    <xsl:variable name="year" select="year-from-date(xs:date($dateValue))"/>
    <xsl:value-of select="$year"/>
  </xsl:template>

</xsl:stylesheet>

Обратите внимание, что вам также нужно заключить в кавычки select в вашем "dateValue" xsl:variable.

...