使用xslt 1.0处理分隔文本

时间:2017-03-31 11:44:12

标签: xslt xslt-1.0

我需要使用xslt处理带分隔符的文本,如下所示:

abc@mail;#6896;#def@mail;#7467;#hij@mail

输出应该是mailto:链接所有地址,我需要丢弃它们之间的数字。我正在使用Sharepoint,所以只能使用XSLT 1.0

编辑: 我在大约7年前发现了这个问题,这几乎是一样的: "Regular expression"-style replace in XSLT 1.0 就我而言,它完全相反:保留数字并丢弃邮件地址。有人可以帮我修改地址中的代码吗? 更新:作为一种解决方法,我在文本中添加了分隔符作为前缀,模板工作正常。

1 个答案:

答案 0 :(得分:0)

这专门查找数字而不是跳过其他项目。

    <xsl:template name="ExtractNumbers">
    <xsl:param name="strInputString"/>

    <xsl:variable name="strCurrent" select="substring-before($strInputString, ';#')" />
    <xsl:variable name="strRemaining" select="substring-after($strInputString, ';#')" />

    <xsl:if test="$strCurrent != ''">
        <xsl:if test="string(number($strCurrent)) != 'NaN'">
            <xsl:value-of select="$strCurrent" />

            <xsl:if test="contains($strRemaining, ';#')">
                <xsl:text>, </xsl:text>
            </xsl:if>
        </xsl:if>

        <xsl:call-template name="ExtractNumbers">
            <xsl:with-param name="strInputString" select="$strRemaining"/>
        </xsl:call-template>
    </xsl:if>
</xsl:template>