XSL转换:在XSL中使用translate和substring-after

时间:2013-11-27 21:28:54

标签: xml xslt

我很难过,非常感谢任何帮助。我试图从XML字段捕获电子邮件值,但我没有得到所需的输出。

我有这个XML字段:

<Rmk>EMAIL-FIRST.LAST*ABX.COM</Rmk>

我有这个XSL声明:

<xsl:for-each select="//Rmk[starts-with(.,'EMAIL-')]">
<Email>
<xsl:value-of select="translate(substring-after(.,'EMAIL-'),'*','@')"/>
</Email>
</xsl:for-each>

它产生的输出是FIRST.LAST*ABX.COM,而期望的输出是FIRST.LAST@ABX.COM。有什么输入?

1 个答案:

答案 0 :(得分:3)

http://xslfiddle.net

上使用您的数据
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:for-each select="//Rmk[starts-with(.,'EMAIL-')]">
            <Email>
                <xsl:value-of select="translate(substring-after(.,'EMAIL-'),'*','@')"/>
            </Email>
        </xsl:for-each>  
    </xsl:template>
</xsl:stylesheet>
转换的

产生结果

<Email>FIRST.LAST@ABX.COM</Email>

这似乎是你想要的结果。还有什么不对?