Хорошо, напишите шаблон, соответствующий sec[@disp-level]/title
, который делает это:
<xsl:template match="sec[@disp-level]/title">
<xsl:element name="h{../@disp-level}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
Как и для большинства таблиц стилей, этот подход работает и легко допускает дальнейшие модульные преобразования других элементов или узлов, если таблица стилей включает шаблон преобразования идентификаторов
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
или в XSLT 3 декларация <xsl:mode on-no-match="shallow-copy"/>
.