Я не думаю, что вы можете достичь этого с помощью level = "multiple".
Я думаю, что вы можете получить необходимое число для (скажем) элемента h3, используя
<xsl:template match="h3" mode="number">
<xsl:number level="any" count="h1"/>
<xsl:text>.</xsl:text>
<xsl:number level="any" count="h2" from="h1"/>
<xsl:text>.</xsl:text>
<xsl:number level="any" count="h3" from="h2"/>
</xsl:template>
и затем вы можете определить аналогичные правила шаблона для других уровней и получить номер уровня для раздела, используя <xsl:apply-templates select="." mode="number"/>
.
Несколько предостережений: (a) я не проверял это, и (b) правила для xsl:number
в XSLT 1.0 оставляют некоторые случаи недоопределенными, и известно, что различные реализации XSLT 1.0 интерпретировали правила по-разному. Правила в XSLT 2.0 намного более точны, и в некоторых крайних случаях дают результаты, которые отличаются от (некоторые чтения) спецификации 1.0.
Возможно, что использование CSS для нумерации может обеспечить альтернативное решение.
Другой подход заключается в использовании позиционной группировки для преобразования плоской структуры в структуру вложенных секций HTML5, и в этом случае level = "множественный" решает проблему нумерации.