XSLT - 如果有两个电子邮件地址,如何删除一个电子邮件地址

时间:2017-11-03 14:05:59

标签: xslt xslt-grouping

在下面的xslt中,我可以在运行时获得两个emailaddress值,如Redemptions@test.com; helpdesk@test.com

<xsl:element name="FROM">
<xsl:value-of select="*/EMAIL_ADDRESS"/>
</xsl:element>

我需要检查是否有两个地址并在分号前删除第一个地址(;)我无法从两个电子邮件地址发送电子邮件。

1 个答案:

答案 0 :(得分:0)

要检查是否有两封邮件或只有一封邮件可以在<xsl:choose>块内使用<xsl:element name="FROM">,那么如果有多封邮件使用substring-after(*/EMAIL_ADDRESS, ';'),请参阅下文:

    <xsl:element name="FROM">            
        <xsl:choose>
            <!--check if semicolon exists - will mean that there is more than one mail-->
            <xsl:when test="contains(*/EMAIL_ADDRESS, ';')">                     
                <xsl:choose>
                    <!--check if after first semicolon there is one more and take value before it-->
                    <xsl:when test="contains(substring-after(*/EMAIL_ADDRESS, ';'), ';')">
                        <xsl:value-of select="substring-before(substring-after(*/EMAIL_ADDRESS, ';'), ';')"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <!--get second mail after semicolon-->
                        <xsl:value-of select="substring-after(*/EMAIL_ADDRESS, ';')"/>
                    </xsl:otherwise>
                </xsl:choose>                    
            </xsl:when>
            <xsl:otherwise>
                <!--otherwise it simply takes value of */EMAIL_ADDRESS-->
                <xsl:value-of select="*/EMAIL_ADDRESS"/>
            </xsl:otherwise>
        </xsl:choose>           
    </xsl:element>

按预期结果:

<FROM>helpdesk@test.com</FROM>