Subject: Re: Conditional XSL Variable
From: raulvk <raulvk.soa@xxxxxxxxx>
Date: Thu, 20 Nov 2008 19:51:02 +0000
|
Just to give some more information: I am using the oXygen XSLT
Debugger, and it looks like the variable $mappingsCodeA is never even
assigned a value or initialised!
Any clues?
2008/11/20 raulvk <raulvk.soa@xxxxxxxxx>:
> Hi everyone,
>
> I am using XSLT 2.0 to transform from one XML document to another.
>
> I have defined a lookup table embedded in an XSL variable, which is
> used within the template and is defined as a global variable similar
> to the following:
>
> <xsl:variable name="lookupTable">
> <map:table>
> <map:entry codeA="90434" codeB="9801" codeC="0121" />
> <map:entry codeA="90437" codeB="1800" codeC="1212" />
> <map:otherwise codeB="9800" codeC="9999" />
> </map:table>
> </xsl:variable>
>
> Functionally, this table will be looked up based on codeA, and the
> corresponding values of codeB and codeC will be inserted in different
> elements within the resulting XML document.
> However, if the received value does not match any of the specified
> codeA values, the "otherwise" node should be used instead.
>
> I have created a variable that will store the node that will be used
> to obtain the codeB and codeC variables.
>
> <xsl:variable name="mappingsCodeA">
> <xsl:choose>
> <xsl:when
> test="count($lookupTable/map:table/map:entry[@codeA=$valueOfCodeA]) =
> 1">
> <xsl:value-of
> select="$lookupTable/map:table/map:entry[@codeA=$valueOfCodeA]" />
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of
> select="$lookupTable/map:table/map:otherwise"/>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:variable>
>
> (where $valueOfCodeA is a variable that has the value that has to be looked up).
>
> However, I am finding that the variable $mappingsCodeA never contains
> anything. I think it has something to do with the type of the
> variable, because it is not initialised as a result-tree fragment.
>
> Has anyone come across this problem before? By the way, I am using
> Saxon-B 9.1.0.3.
>
> Thanks!
|