[xsl] mapping 2 attribute values to a 3rd

Subject: [xsl] mapping 2 attribute values to a 3rd
From: Kevin Rodgers <kevin.rodgers@xxxxxxx>
Date: Wed, 2 Feb 2005 18:23:34 -0700
I'm trying to prepend a prefix, which depends on a status code and a
language code, to the front of a title.  I've stored the mapping from
status and language codes to prefixes like this:

<xsl:variable name="title-table">
  <title status="WDRN" lang="en" prefix="(Withdrawn)"/>
  <title status="WDRN" lang="fr" prefix="(Retir&#xE9;)"/>
  <title status="WDRN" lang="it" prefix="(Suspensa)"/>
  <title status="WDRN" lang="sv" prefix="(Utag&#xE5;tt)"/>
  <title status="WDRN" lang="de" prefix="(Zur&#xFC;ckgezogen)"/>
  <!-- more status codes to come! -->

And given that I've got the title text itself stored in a variable named

  <xsl:variable name="title" select="title_list/title[@type='TITLE'][1]"/>

I then try to pass the prefixed title to a template like this:

    <xsl:with-param name="prefixed-title"
       select="if (specific_status)
               then concat($title-table/title[
                            @status=specific_status and
               else normalize-space($title)"/>

So for the following XML, I would expect $prefixed-title to be prefixed
by '(Withdrawn)', but it's just the bare title text.  Can someone point
out what I've done wrong in my stylesheet?

<document id="GDPDCAAAAAAAAAAA">
<title type="TITLE" language="en">Hydraulic Fluid Power - Valves - Mounting Interfaces (NFPA/T3.5.1M R1-1984)</title>
<title type="EXT" language="en">Superseded by T3.5.1 R2-2002</title>

Kevin Rodgers

Current Thread