Subject: Re: [xsl] XSLT3 generic grouping functions From: "Matthieu RICAUD-DUSSARGET m.ricaud-dussarget@xxxxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 9 Jul 2020 14:02:21 -0000 |
Thanks for the comments, I'm glad it doesn't look like a silly pattern :) Yes, this common module really looks like a package, especially this XSL is not usable as is, it has to be imported. But in the context of my company, our architecture is based on xsl:import/include using uri "dependency" protocol (resolved by a catalog), which make it difficult to use packages (which are not based on URI) But I guess we could add visibility even if it's not used directly by the package mechanism. I added this issue : https://github.com/ELSGestion/els-sie-xsl-lib/issues/18 Thanks again Martin -----Message d'origine----- DeB : Martin Honnen martin.honnen@xxxxxx [mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx] EnvoyC)B : jeudi 9 juillet 2020 13:31 CB : xsl-list@xxxxxxxxxxxxxxxxxxxxxx ObjetB : Re: [xsl] XSLT3 generic grouping functions Am 09.07.2020 um 13:21 schrieb Matthieu RICAUD-DUSSARGET m.ricaud-dussarget@xxxxxxxxxxxxxxxxxx: > In the other xsl I pointed > https://github.com/ELSGestion/els-sie-xsl-lib/blob/master/src/main/xsl > /nest-titles.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"> > > B <xsl:param name="e" as="element()"/> > > B <xsl:sequence select="-1"/> > > B <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"> > > B <xsl:param name="e" as="element()"/> > > B <xsl:variable name="deepLlevel" as="xs:string"> > > B B B <xsl:choose> > > B B B B B <xsl:when test="matches(local-name($e), '^h\d+$')"> > > B B B B B B B <xsl:sequence select="substring-after(local-name($e), 'h')"/> > > B B B B B </xsl:when> > > B B B B B <xsl:otherwise> > > B B B B B B B <xsl:value-of select="'-1'"/> > > B B B B B </xsl:otherwise> > > B B B </xsl:choose> > > B </xsl:variable> > > B <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 ? In the context of XSLT 2 or 3 based on importing modules with xsl:import it looks fine. As you say you are also exploring new XSLT 3 features step by step, you could exploring packages and make that function abstract in the base package I think: https://www.w3.org/TR/xslt-30/#visibility
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT3 generic grouping fu, Martin Honnen martin | Thread | [xsl] Seeking XSLT code that provid, Dr. Roger L Costello |
Re: [xsl] XSLT3 generic grouping fu, Martin Honnen martin | Date | [xsl] Seeking XSLT code that provid, Dr. Roger L Costello |
Month |