Subject: Re: [xsl] Resolve optional conref and apply another template From: "Chris Papademetrious christopher.papademetrious@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 17 Jan 2022 22:51:44 -0000 |
Hi Rick, To combine templates, I typically use <xsl:next-match> to apply whatever the next-in-line template would have been. I put the results in a variable, then process the contents of the variable: <!-- Convert caution and warning notes to simpletables. --> <xsl:template match="note[@type='caution' or @type='warning']" priority="10"> <xsl:variable name="results"> <xsl:next-match/> <!-- apply other templates first, just in case --> </xsl:variable> <simpletable relcolwidth="100*" frame="all" outputclass="{@type}"> <sthead><stentry>{@type => upper-case()}</stentry></sthead> <strow> <stentry><xsl:sequence select="$results/node()"/></stentry> </strow> </simpletable> </xsl:template> If you use this approach, you'll want your caution/warning template to have the higher priority (so it calls your @conref template as the next-in-line template). * Chris From: rick@xxxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Sent: Monday, January 17, 2022 5:37 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] Resolve optional conref and apply another template Hi All, I have some <note> elements that I want to convert to tables, so I have the following template: <!-- Convert caution and warning notes to simpletables. --> <xsl:template match="note[@type='caution' or @type='warning']"> <simpletable relcolwidth="100*" frame="all" outputclass="{@type}"> <sthead><stentry>{@type => upper-case()}</stentry></sthead> <strow> <stentry><xsl:apply-templates/></stentry> </strow> </simpletable> </xsl:template> However, some <note> elements are conrefs to other files. I have this template to resolve the conrefs: <xsl:template match="note[@conref]" priority="2"> <xsl:variable name="doc"> <xsl:choose> <xsl:when test="contains(@conref,'#')">{substring-before(@conref,'#')}</xsl:when> <xsl:otherwise>{@conref}</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="id"> <xsl:if test="contains(@conref,'#')"> <xsl:variable name="scratch" select="substring-after(@conref,'#')"/> <xsl:choose> <xsl:when test="contains($scratch,'/')">{tokenize($scratch,'/')[last()]}</xsl:when> <xsl:otherwise>{$scratch}</xsl:otherwise> </xsl:choose> </xsl:if> </xsl:variable> <xsl:variable name="file" select="resolve-uri($doc,base-uri(.))"/> <xsl:choose> <xsl:when test="doc-available($file)"> <xsl:choose> <xsl:when test="($id and $id!='')"> <xsl:copy-of select="doc($file)//*[@id=$id]"/> </xsl:when> <xsl:otherwise> <xsl:copy-of select="doc($file)/*"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> </xsl:choose> </xsl:template> I am not sure how to integrate the two templates so that I can convert conref notes to tables too. Any pointers would be appreciated. Thank you very much. Rick Rick Quatro Carmen Publishing Inc. 585-729-6746 rick@xxxxxxxxxxxxxxx<mailto:rick@xxxxxxxxxxxxxxx> http://www.frameexpert.com/store<https://urldefense.com/v3/__http:/www.framee xpert.com/store__;!!A4F2R9G_pg!PAl4W0RGU2mzM5zkhGiCgLd8JgviiODhv_Kkz7PeGcKhN0 OzaU0noYnp5IAZ0NfnpjO93T0BGmaYXHE$> XSL-List info and archive<https://urldefense.com/v3/__http:/www.mulberrytech.com/xsl/xsl-list__ ;!!A4F2R9G_pg!PAl4W0RGU2mzM5zkhGiCgLd8JgviiODhv_Kkz7PeGcKhN0OzaU0noYnp5IAZ0Nf npjO93T0B7s5x5Nc$> EasyUnsubscribe<https://urldefense.com/v3/__http:/lists.mulberrytech.com/unsu b/xsl-list/3380743__;!!A4F2R9G_pg!PAl4W0RGU2mzM5zkhGiCgLd8JgviiODhv_Kkz7PeGcK hN0OzaU0noYnp5IAZ0NfnpjO93T0BUffucSQ$> (by email<>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Resolve optional conref a, Graydon graydon@xxxx | Thread | Re: [xsl] Resolve optional conref a, Toshihiko Makita tma |
Re: [xsl] Resolve optional conref a, Graydon graydon@xxxx | Date | Re: [xsl] Resolve optional conref a, Toshihiko Makita tma |
Month |