xsl-list
[Top] [All Lists]

RE: [xsl] Question about variable assignment based on run-time value

2009-11-02 15:30:09
I'm trying to capture a sequence of nodes in a variable. The 
catch is that the nodes I capture can vary based on the 
local-name() of the element matched by the template.

I've got:

<xsl:variable name="label-nodes">
     <xsl:choose>
         <xsl:when test="local-name() = 'shared'">
             <xsl:value-of select="rm:label[$page-type = 
tokenize(@pages, '\s*,\s*')]"/>
         </xsl:when>
         <xsl:otherwise>
             <xsl:value-of select="rm:label"/>
         </xsl:otherwise>
     </xsl:choose>
</xsl:variable>

Instead, I want the sequence of rm:label elements selected by 
the XPath expression in the xsl:value-of instruction's select 
attribute. But how do I select a sequence?

Well, the minimum change is:

<xsl:variable name="label-nodes">
     <xsl:choose>
         <xsl:when test="local-name() = 'shared'">
             <xsl:sequence select="rm:label[$page-type = tokenize(@pages,
'\s*,\s*')]"/>
         </xsl:when>
         <xsl:otherwise>
             <xsl:sequence select="rm:label"/>
         </xsl:otherwise>
     </xsl:choose>
</xsl:variable>

But I think I would write

<xsl:variable name="label-nodes"
  select="rm:label[local-name(current()) ne 'shared' or $page-type =
tokenize(@pages, '\s*,\s*')]"/>

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>