假设我有以下变量
<xsl:variable name="randomString" select="'COLUMN1 == 400 or COLUMN1 == 5 and COLUMN2 != 3'" />
是否有任何方便的方法来访问 tokenize() 函数中的匹配模式,例如用这个
<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>
或者我必须使用像我在这里找到的自定义模板吗 http://docbook.sourceforge.net/release/xsl/1.77.0/doc/lib/str.tokenize.keep.delimiters.html
最佳答案
不,没有办法检索匹配的分隔符。 “分隔符本身不会返回。” ( http://www.w3.org/TR/xpath-functions/#func-tokenize )
一种解决方法是,在外循环中使用 或
作为分隔符进行分词,然后在内循环中使用 和
作为分隔符进行分词。然后,根据您在循环中的位置,您将始终知道您正在处理哪些分隔符。
另一种方法是使用analyze-string()
。参见 this answer .
关于xslt - 在 XSL 标记化中访问匹配的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516132/