[xsl] Resolve optional conref and apply another template

Subject: [xsl] Resolve optional conref and apply another template
From: "rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 17 Jan 2022 22:36:30 -0000
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

Current Thread