Re: [xsl] Complex Condition problem with Attributes

Subject: Re: [xsl] Complex Condition problem with Attributes
From: Ragulf Pickaxe <ragulf.pickaxe@xxxxxxxxx>
Date: Thu, 15 Sep 2005 14:36:22 +0200
> <xsl:when test="//*[contains(name(),'DebtManagement') and
> (//*[contains(name(),'DebtManagement')]@action='add' or
> //*[contains(name(),'DebtManagement')]@action='delete')">
>
> It failes at the position @.  But why?

Your syntax is wrong.
Either //*[contains(name(),'DebtManagement')]/@action (which is not
what you want as it would choose the attribute - that is, test if the
attribute existed.

Or //*[contains(name(),'DebtManagement')][@action] (which would choose
the element (marked with *) that contains an attribute called action).


What you want is something like:
<xsl:when test="//*[contains(name(),'DebtManagement') and
(@action='add' or @action='delete')]">

Which gives all the elements in the stylesheet that: has a name which
contains the string 'DebtManagement' and has an attribute called
action with a string value of either 'add' or 'delete'.

Regards,
Ragulf Pickaxe :-)

Current Thread