<?xml version="1.0"?>
<!-- This file is part of dvisvgm -->
<!-- Copyright (C) 2015-2024 Martin Gieseking <martin.gieseking@uos.de> -->
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:date="http://exslt.org/dates-and-times"
  xmlns:func="http://exslt.org/functions"
  xmlns:my="my-namespace"
  exclude-result-prefixes="my"
  extension-element-prefixes="date func">

  <xsl:output doctype-public="-//OASIS//DTD DocBook XML V4.5//EN" doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>

  <!-- adapt ISO date created by keyword expansion -->
  <xsl:template match="refentryinfo/date | revision[1]/date">
    <date>
      <xsl:value-of select="my:extract-date(.)"/>
    </date>
  </xsl:template>

  <!-- add date to refmeta element -->
  <xsl:template match="refmeta">
    <xsl:copy>
      <xsl:copy-of select="*"/>
      <refmiscinfo class="date">
        <xsl:value-of select="my:extract-date(../refentryinfo/date)"/>
      </refmiscinfo>
    </xsl:copy>
  </xsl:template>

  <func:function name="my:extract-date">
    <xsl:param name="isodate"/>
    <xsl:variable name="shortdate" select="substring($isodate, 1, 10)"/>
    <xsl:choose>
      <xsl:when test="translate($shortdate, '0123456789', '##########') = '####-##-##'">
        <!-- use date part of expanded keyword -->
        <func:result select="$shortdate"/>
      </xsl:when>
      <xsl:otherwise>
        <!-- use current date as fallback -->
        <func:result select="substring(date:date(), 1, 10)"/>
      </xsl:otherwise>
    </xsl:choose>
  </func:function>

  <!-- copy everything else unchanged -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
