xsl-list
[Top] [All Lists]

[xsl] select attribute of xsl:variable

2010-09-01 06:33:25
Hello all,

I have a piece of an XML, looks like below. I am trying to add an 
attribute to the matching element to corresponding @role value defined in 
the variable. The first case seems to be working well but secondly one 
fails and it looks that conditional check with @select attribute 
(select="parent::textbox-body/parent::textbox[(_at_)role]")  in variable is 
failing. Can't we condition checks  with ancestors/parent values in child 
elements. 

I also tried defining it as global variable 

<xsl:variable name="role_title" select="textbox[(_at_)role]"/>

but too doesn't seems to be working.

Can somebody guide me where I am wrong. I am using 1.0 xsltproc.

TIA,
Pankaj 


XML
====
<textbox id="b0030" role="alt1">
    <textbox-head>
        <title>XXXXXXXXXXXXXX</title>
 </textbox-head>
</textbox>


Case 1
==========
<xsl:template match="display/textbox">
<xsl:variable name="role_title" select="@role"/>
<xsl:variable name="boxtype">
<xsl:choose>
<xsl:when test="$role_title = 'alt1'">TE A title</xsl:when>
<xsl:when test="$role_title = 'alt2'">TE B title</xsl:when>
<xsl:when test="$role_title = 'alt3'">TE C title</xsl:when>
<xsl:when test="$role_title = 'alt4'">TE D title</xsl:when>
<xsl:when test="$role_title = 'alt5'">TE E title</xsl:when>
<xsl:when test="$role_title = 'alt6'">TE F title</xsl:when>
<xsl:when test="$role_title = 'alt7'">TE G title</xsl:when>
<xsl:when test="$role_title = 'alt8'">TE H title</xsl:when>
<xsl:when test="$role_title = 'alt9'">TE I title</xsl:when>
<xsl:when test="$role_title = 'alt1'">TE J title</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:copy>
<xsl:attribute name="aid:pstyle"><xsl:value-of 
select="$boxtype"/></xsl:attribute>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>


Case 2
=========

<xsl:template match="display/textbox/textbox-head/title">
<xsl:variable name="role_title" 
select="parent::textbox-body/parent::textbox[(_at_)role]"/>
<xsl:variable name="boxtype">
<xsl:choose>
<xsl:when test="$role_title = 'alt1'">TE A title</xsl:when>
<xsl:when test="$role_title = 'alt2'">TE B title</xsl:when>
<xsl:when test="$role_title = 'alt3'">TE C title</xsl:when>
<xsl:when test="$role_title = 'alt4'">TE D title</xsl:when>
<xsl:when test="$role_title = 'alt5'">TE E title</xsl:when>
<xsl:when test="$role_title = 'alt6'">TE F title</xsl:when>
<xsl:when test="$role_title = 'alt7'">TE G title</xsl:when>
<xsl:when test="$role_title = 'alt8'">TE H title</xsl:when>
<xsl:when test="$role_title = 'alt9'">TE I title</xsl:when>
<xsl:when test="$role_title = 'alt1'">TE J title</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:copy>
<xsl:attribute name="aid:pstyle"><xsl:value-of 
select="$boxtype"/></xsl:attribute>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

--~------------------------------------------------------------------
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>
--~--