Могу ли я использовать оператор 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 является регулярным выражением и, следовательно, | позволяет альтернативы.

Другие вопросы по тегам