regex - 当正则表达式为变量时,analyzer-string不匹配

标签 regex xslt xslt-2.0

下面的代码可以按预期工作,并且当文本中存在Internet时,它将被匹配。

<xsl:template name="IndexTerm">
    <xsl:param name="matchedRegex">
        <xsl:text>(.*)(Internet)(.*)</xsl:text>
    </xsl:param>
    <xsl:param name="text"></xsl:param>
    <xsl:analyze-string select="$text" regex="(.*)(Internet)(.*)" flags="m">
        <xsl:matching-substring>
            <xsl:call-template name="IndexTerm">
                <xsl:with-param name="text">
                    <xsl:value-of select="regex-group(1)"></xsl:value-of>
                </xsl:with-param>
            </xsl:call-template>
                <xsl:element name="a">
                    <xsl:attribute name="id">
                        <xsl:value-of select="generate-id($text)"></xsl:value-of>
                    </xsl:attribute>
                    <xsl:value-of select="regex-group(2)"></xsl:value-of>
                </xsl:element>
                <xsl:value-of select="regex-group(3)"></xsl:value-of>
        </xsl:matching-substring>
        <xsl:non-matching-substring>
            <xsl:value-of select="."></xsl:value-of>
        </xsl:non-matching-substring>
    </xsl:analyze-string>
</xsl:template>

当行:
<xsl:analyze-string select="$text" regex="(.*)(Internet)(.*)" flags="m">

替换为:
<xsl:analyze-string select="$text" regex="$matchedRegex" flags="m">

它不再与正则表达式匹配。我确实需要将其作为参数传递。反正有做这项工作吗?

最佳答案

使用属性值模板

regex="{$matchedRegex}"

关于regex - 当正则表达式为变量时,analyzer-string不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7667541/

相关文章:

regex - 将多个正则表达式组合成一个/构建小正则表达式以匹配一组固定字符串

regex - 如何使用正则表达式格式化列表

xml - 如何使用 XPATH 从 XML 文档中选择不同的值?

xml - 如何在 XSLT 中包装文本以适应窗口

java - 正则表达式匹配 [任何字符][任何数字]点与异常情况

c++ - 如何在 C++ 正则表达式中匹配换行符?

xml - 是数字,在 XPath 或 XSL 中是字母/数字

xslt - 如何通过在 XSLT 中编写单个语句来避免输出中出现所有 namespace

xml - XSLT 2.0 基于属性值的组相邻

xml - XSLT:如何匹配(在模板中)两个不同的元素