xs:dateTime
値を作成するには、日付形式の一部を抽出する必要がありますformat-dateTime
。以下にサンプルを示します。
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mf="http://example.com/mf"
exclude-result-prefixes="xs mf">
<xsl:output method="xml" indent="yes"/>
<xsl:function name="mf:pad" as="xs:string">
<xsl:param name="value" as="xs:string"/>
<xsl:param name="length" as="xs:integer"/>
<xsl:variable name="zeros" as="xs:string" select="'0000000000'"/>
<xsl:sequence select="concat(substring($zeros, 1, $length - string-length($value)), $value)"/>
</xsl:function>
<xsl:template match="date-data">
<xsl:variable name="dt" as="xs:dateTime">
<xsl:analyze-string select="value" regex="([0-9]{{4}})-([0-9]{{1,2}})-([0-9]{{1,2}}) ([0-9]{{1,2}}):([0-9]{{1,2}})">
<xsl:matching-substring>
<xsl:sequence select="xs:dateTime(concat(regex-group(1), '-',
mf:pad(regex-group(2), 2), '-',
mf:pad(regex-group(3), 2), 'T',
mf:pad(regex-group(4), 2), ':',
mf:pad(regex-group(5), 2),
':00'))"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:value-of select="format-dateTime($dt, '[Y0001]-[M01]-[D01]T[H01]:[m01]')" />
</xsl:template>
</xsl:stylesheet>
フォーマットのバリエーションに応じて、コードを調整する必要がある場合があります。