[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: filter using contains with multiple values
Raimund Kammering raimund.kammering@xxxxxxx wrote:
okay got that point (parenthesis). But still that does not work for me since somehow the string in filter_value is not understood as sequence! So if I now use: Are you sure you are using an XSLT 2.0 processor with the <xsl:stylesheet version="2.0" ? The xsl:value-of results sounds as if you have the wrong version attribute on your xsl:stylesheet or xsl:transform (or somewhere in your code you set xsl:version to 1.0). For me <?xml version="1.0" encoding="UTF-8" ?> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> <xsl:param name="filter" as="xs:string" select="'keyword'"/> <xsl:param name="filter_values" as="xs:string*" select="'Log', 'Info'"/> <xsl:template match="/"> <xsl:copy-of select="//*[name() = $filter and . = $filter_values]"/> </xsl:template> </xsl:transform> when run against <list> <entry> <keyword>Log</keyword> <location>A</location> </entry> <entry> <keyword>Log</keyword> <location>B</location> </entry> <entry> <keyword>Problem</keyword> <location>A</location> </entry> <entry> <keyword>Info</keyword> <location>B</location> </entry> </list> with Saxon 9 (see online at http://xsltransform.net/gWvjQg1) returns the three elements <keyword>Log</keyword><keyword>Log</keyword><keyword>Info</keyword> The contains check with "some" would be <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> <xsl:param name="filter" as="xs:string" select="'keyword'"/> <xsl:param name="filter_values" as="xs:string*" select="'Log', 'Info'"/> <xsl:template match="/"> <xsl:copy-of select="//*[name() = $filter and (some $value in $filter_values satisfies contains(., $value))]"/> </xsl:template> </xsl:transform> with the sample <list> <entry> <keyword>Log</keyword> <location>A</location> </entry> <entry> <keyword>Log</keyword> <location>B</location> </entry> <entry> <keyword>Problem</keyword> <location>A</location> </entry> <entry> <keyword>The newest Info</keyword> <location>B</location> </entry> </list> giving <keyword>Log</keyword><keyword>Log</keyword><keyword>The newest Info</keyword> (Online at http://xsltransform.net/gWvjQg1/1)
|
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
|