Stanislav Vitebskiy wrote: > Here is a simple problem: select all the <customer> elements > that have <employee> sibling with the same 'name' attribute. > The solution is pretty obvious: > customer[@name = ../employee/@name] > > Lets now complicate the task a little. Let the name consist of > two parts, 'first-name' and 'last-name'. > Little complication - big problem: the technique shown above > will no longer work; there is no way to compare more than one > attribute of different elements, and there is no workaround in > the current version of XPath. current() function may be helpful to a certain extent, consider current node is customer element: self::*[../employee[@first-name=current()/@first-name and @last-name=current()/@last-name]] may be it's not too handy, but actually it is grouping problem and keys would be more elegant and effective solution: <xsl:key name="kEmpName" match="employee" use="concat(@first-name, '-', @last-name)"/> ... <xsl:apply-templates select="customer[key('kEmpName', concat(@first-name, '-', @last-name))]"/> -- Oleg Tkachenko Multiconn International, IsraelReceived on Thursday, 20 December 2001 14:34:23 GMT
This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:52 GMT