Suppose I have the following variable
<xsl:variable name="randomString" select="'COLUMN1 == 400 or COLUMN1 == 5 and COLUMN2 != 3'" />
Is there any convenient way to access the matched pattern within the tokenize() function e.g. using this
<xsl:for-each select="tokenize($randomString, 'and|or')">
<xsl:value-of select="concat('not(', current(), ')')" />
<!-- How do I access the matched pattern? -->
</xsl:for-each>
Or do I have to use a custom template like the one I have found here http://docbook.sourceforge.net/release/xsl/1.77.0/doc/lib/str.tokenize.keep.delimiters.html
No, there is no way to retrieve the matched separator. "The separators themselves are not returned." (http://www.w3.org/TR/xpath-functions/#func-tokenize)
A workaround could be, tokenizing with or as a separator in an outer loop, then tokenizing with and as a separator in an inner loop. Then you would always know which separators you were dealing with, based on where in the loops you are.
Another approach would be to use analyze-string(). See this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With