In the other xsl I pointed
https://github.com/ELSGestion/els-sie-xsl-lib/blob/master/src/main/xsl/nest-t
itles.xsl I use a kind on binterfaceb pattern :
This common xsl module defines function which returns a fatal error saying
bplease override me to define your caseb
<xsl:function name="xslLib:nest-title.getDeepLevel" as="xs:integer">
<xsl:param name="e" as="element()"/>
<xsl:sequence select="-1"/>
<xsl:message terminate="yes">[FATAL] Please implement an overriding function
for xslLib:nest-title.getDeepLevel() in your own XSLT</xsl:message>
</xsl:function>
Thatbs what the nest-html-titles.xsl does defining level for HTML titles :
<xsl:function name="xslLib:nest-title.getDeepLevel" as="xs:integer">
<xsl:param name="e" as="element()"/>
<xsl:variable name="deepLlevel" as="xs:string">
<xsl:choose>
<xsl:when test="matches(local-name($e), '^h\d+$')">
<xsl:sequence select="substring-after(local-name($e), 'h')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'-1'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:sequence select="$deepLlevel cast as xs:integer"/>
</xsl:function>
I could define any other XSLT for this kind of title grouping by just
importing the common module and overriding this function according to the XML
grammar of title to nest.
I like this pattern even if Ibm not sure this is a good practice or is used
by others.
Any thought about it ?
|