Могу ли я использовать оператор OR в <xsl: value-of select>?
Я использовал следующий кусок кода, чтобы заменить регулярное выражение '\s*AND\s*NOT\s*scope:\("TEXT"\)'
с определенной строкой, только если совпадение не встречается (non-matching-substring
):
<xsl:template name="strip-scopes">
<xsl:param name="q" />
<xsl:analyze-string select="$q" regex='\s*AND\s*NOT\s*scope:\("TEXT"\)'>
<xsl:matching-substring></xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="replace(replace(.,'AND \(scope:.*?\)',''), 'AND facet_.*?:\(.*?\)', '')"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
Он работает нормально, но теперь мне нужно включить другое условие в <xsl:non-matching-string
>. Можно ли включить условие ИЛИ внутри элемента, чтобы оба 'AND facet_.*?:\(.*?\)'
а также 'AND NOT facet_.*?:\(.*?\)'
замены могут быть разрешены?
1 ответ
Решение
Ты можешь использовать replace(., 'foo|bar', 'whatever')
иметь оба foo
и / или bar
подстроки заменены на whatever
, Второй аргумент replace
является регулярным выражением и, следовательно, |
позволяет альтернативы.