[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] filtering elements by single xpath
Hi! I'm using XSLT 1.1 and Saxon 6.5.3. I have following XML structure: <root> <body> <item pos="1" name="n1"/> <item pos="2" name="n2"/> <item pos="3" name="n2"/> <item pos="4" name="n3"/> <item pos="5" name="n4"/> </body> <item-filter> <allow-items with-name="n2"/> <allow-items with-name="n4"/> </item-filter> </root> and in template: <xsl:template match="body"> <xsl:variable name="filtered-items" select="item[/root/item-filter/allow-items[@with-name = ???/@name]" /> ... </xsl:template> I'm trying to fill variable filtered-items with elements item with "allowed" name (= there is an element /root/item-filter/allow-items with attribute @with-name containing same value as item's @name)*, but I don't know how to reach current item on ??? position in my select (function current() points to current body element). I can handle it by sequential processing (copy of item is good enough for my needs): <xsl:variable name="filtered-items"> <xsl:for-each select="item"> <xsl:if test="/root/item-filter/allow-items[@with-name = current()/@name]"> <xsl:copy-of select="."/> </xsl:if> </xsl:for-each> </xsl:variable> but I'm just curious if it is possible to achieve this by single xpath? Thanks in advance! Best regards, Tomas *resultant filtered-items content for given example should be: <item pos="2" name="n2"/> <item pos="3" name="n2"/> <item pos="5" name="n4"/>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|