Вам необходимо добавить шаблон, соответствующий year
, который может получить текстовый узел, содержащий год, и извлечь из него соответствующую цифру, чтобы создать десятилетие
Попробуйте этот шаблон
<xsl:template match="year">
<xsl:variable name="text" select="normalize-space(text()[matches(., $pattern)])" />
<year decade="{replace($text, concat('.*', $pattern, '.*'), '$1')}">
<xsl:apply-templates />
</year>
</xsl:template>