版本1.0中的xslt analyze-string替代方案

时间:2016-11-02 07:19:57

标签: c# .net xslt xslt-1.0 xslt-2.0

你能帮我把下面的XSLT 2.0代码转换成XSLT 1.0

    <xsl:template match="text()">
    <xsl:analyze-string select="." regex="\s*\w+([-+.'_%]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*">
        <xsl:matching-substring>
            <a href="mailto:{.}">
                <xsl:value-of select="." disable-output-escaping="no"/>
            </a>
        </xsl:matching-substring>
        <xsl:non-matching-substring>
            <xsl:value-of select="." disable-output-escaping="no"/>
        </xsl:non-matching-substring>
    </xsl:analyze-string>
</xsl:template>

1 个答案:

答案 0 :(得分:0)

这段代码的作用是在文本中查找看起来像电子邮件地址的内容,然后在这种情况下添加标记。没有正则表达式这样做是非常不可能的,尽管你可以想出某种近似值(正则表达式本身可能只是真正的电子邮件地址语法的近似值)。

大多数XSLT 1.0引擎可能会提供一些调用外部函数来执行正则表达式的方法,如果你真的不能使用XSLT 2.0,这可能是你最好的选择。所以它取决于您使用的是哪个XSLT 1.0处理器。

(但在C#和.net中,有很多优秀的XSLT 2.0处理器,为什么你还在使用1.0?)