我需要使用xslt处理带分隔符的文本,如下所示:
abc@mail;#6896;#def@mail;#7467;#hij@mail
输出应该是mailto:链接所有地址,我需要丢弃它们之间的数字。我正在使用Sharepoint,所以只能使用XSLT 1.0
编辑: 我在大约7年前发现了这个问题,这几乎是一样的: "Regular expression"-style replace in XSLT 1.0 就我而言,它完全相反:保留数字并丢弃邮件地址。有人可以帮我修改地址中的代码吗? 更新:作为一种解决方法,我在文本中添加了分隔符作为前缀,模板工作正常。
答案 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>