You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT映射多组email-addresses到不同节点仅返回首个值问题求助

问题排查与解决方案

错误原因

  • 节点名拼写错误:源XML中邮箱节点名为email-addresses,你的XPath写为email-address,缺少末尾的s
  • XPath取值逻辑错误:直接使用路径取值时,默认会返回匹配到的第一个节点的内容,不会和你判断的type属性自动对应
  • 语法错误:xsl:value of写法错误,正确应为xsl:value-of,中间需要加连字符

正确实现代码

写法1:循环遍历适配多场景(推荐)

适合后续可能新增其他邮箱类型的场景,扩展性更强:

<output>
    <xsl:for-each select="Input/email-addresses">
        <xsl:choose>
            <xsl:when test="type='work'">
                <emailwork>
                    <xsl:value-of select="value"/>
                </emailwork>
            </xsl:when>
            <xsl:when test="type='personal'">
                <emailper>
                    <xsl:value-of select="value"/>
                </emailper>
            </xsl:when>
        </xsl:choose>
    </xsl:for-each>
</output>

写法2:保留原if逻辑修改版

适合固定只有工作、个人两种邮箱类型的场景:

<output>
    <xsl:if test="Input/email-addresses[type='work']">
        <emailwork>
            <xsl:value-of select="Input/email-addresses[type='work']/value"/>
        </emailwork>
    </xsl:if>
    <xsl:if test="Input/email-addresses[type='personal']">
        <emailper>
            <xsl:value-of select="Input/email-addresses[type='personal']/value"/>
        </emailper>
    </xsl:if>
</output>

内容的提问来源于stack exchange,提问作者sivakumar kala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:45:03