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

XSLT循环转换XML格式遇阻,请求协助处理ICWRRsp格式转换

解决XSLT循环转换的问题

我来帮你搞定这个XML转换的需求,针对你输入的<ICWRRsp>结构,我准备了两种常见场景的解决方案,你可以根据实际目标XML结构调整:

场景1:单独循环处理每个和

如果你的目标是把每个<IcwrId>和<WorkId>分别转换成独立的条目(比如分开归类输出),可以用xsl:for-each遍历对应节点:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <!-- 匹配根节点 -->
    <xsl:template match="/ICWRRsp">
        <TargetRoot>
            <!-- 循环处理所有<IcwrId> -->
            <IcwrEntries>
                <xsl:for-each select="IcwrId">
                    <IcwrEntry>
                        <Id><xsl:value-of select="."/></Id>
                    </IcwrEntry>
                </xsl:for-each>
            </IcwrEntries>

            <!-- 循环处理所有<WorkId> -->
            <WorkEntries>
                <xsl:for-each select="WorkId">
                    <WorkEntry>
                        <Id><xsl:value-of select="."/></Id>
                    </WorkEntry>
                </xsl:for-each>
            </WorkEntries>
        </TargetRoot>
    </xsl:template>
</xsl:stylesheet>

这个XSLT会把所有<IcwrId>包装到<IcwrEntries>下,每个<IcwrId>对应一个<IcwrEntry>,同理处理<WorkId>。

场景2:按位置配对和

如果需要将第一个<IcwrId>和第一个<WorkId>配对,第二个和第二个配对(以此类推),可以通过节点的位置索引position()来关联:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/ICWRRsp">
        <TargetRoot>
            <!-- 遍历所有<IcwrId>,按位置关联对应的WorkId -->
            <xsl:for-each select="IcwrId">
                <CombinedEntry>
                    <IcwrId><xsl:value-of select="."/></IcwrId>
                    <!-- 用position()获取当前IcwrId的位置,找到对应位置的WorkId -->
                    <WorkId><xsl:value-of select="../WorkId[position() = current()/position()]"/></WorkId>
                </CombinedEntry>
            </xsl:for-each>
        </TargetRoot>
    </xsl:template>
</xsl:stylesheet>

小提示

  • 如果你的目标XML结构和上面的示例不同,只需要修改<TargetRoot>、<CombinedEntry>这类自定义标签,以及内部的节点结构即可。
  • 要是<IcwrId>和<WorkId>的数量不一致,上面的配对逻辑会忽略多余的节点(比如IcwrId比WorkId多的话,后面的IcwrId对应的WorkId会为空)。

内容的提问来源于stack exchange,提问作者Lavanya Komarasamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:13:15