RE: [xsl] Catch ALL | Failed template rule

Subject: RE: [xsl] Catch ALL | Failed template rule
From: "Nicola Harlow" <Nicola.Harlow@xxxxxxxxxxxx>
Date: Thu, 24 Mar 2005 13:42:16 -0000
Hi Karl,

Sorry if this is way off target, but I have just found a solution for a
similar problem that may help you.

This is in XSL:FO, and may not be of any use to you, but you may be able
to adapt it.

Basically I have a tag that searches for a glossary entry. When it finds
it, it creates a link to the glossary entry. If there is no entry, it
creates a broken link and spews forth some red text so I can find it
easily.

    <xsl:template match="glossarytt">
        <xsl:variable name="items" select="key('glossaryitems-by-name',
            @name)"/>

            <xsl:choose>
                <xsl:when test="$items">
                    <xsl:for-each select="$items">
                        <xsl:variable name="href" select="@name"/>
                        <fo:inline text-decoration="underline"
color="green"
                            font-weight="bold">
                            <fo:basic-link
internal-destination="{$href}">
                                <xsl:value-of select="term"/>
                            </fo:basic-link>
                        </fo:inline>
                    </xsl:for-each>
                </xsl:when>
                <xsl:otherwise><fo:basic-link
internal-destination="BrokenGlossaryTT">
                    <fo:inline color="red">Broken glossarytt:
<xsl:value-of
                        select="@name"/></fo:inline></fo:basic-link>
                </xsl:otherwise>
                </xsl:choose>
    </xsl:template>

I don't know if this will quite cover what you want, but it certainly
works for me!

(Thanks to J.Pietschmann)

Nicola

Nicola Harlow
Technical Author
The Program Management Group plc
tel:           +44 (0) 1937 547 171
direct:      +44 (0) 1937 547 165
fax:         +44 (0) 1937 547 154
mail:     nicola.harlow@xxxxxxxxxxxx
web:        http://www.pm-group.com

Current Thread