【问题标题】:How to separate the delimited values in xml using an xslt coding如何使用 xslt 编码分隔 xml 中的分隔值
【发布时间】:2025-12-26 17:40:12
【问题描述】:

在我们的应用程序中,我们使用 xslt 编码将输入 xml 转换为输出 xml。 我正在使用下面的代码。但它只是分隔分号之前的第一个字段。 同样,我想分隔输出 xml 中的每个值,以便我可以将尾随空格或前导零添加到所需的字段中。 SINO 是我们的供应商编号,带分隔符的值是价格等值。

如何分隔每个值并写入同一个 xml 标签?

我的意见:

<UserArea>
    <Property>
        <NameValue name="SINO">852963;20210406;1520.00;1520.00;0.00;2789       852963        
                            2021 FAIRVIEW L</NameValue>
    </Property>
    <Property>
        <NameValue name="SINO">TEST12345;20210406;1000.00;1000.00;0.00;2789       
                          TEST12345     2021 FAIRVIEW L</NameValue>
    </Property>
</UserArea>

我正在尝试的 XSLT 代码是:

    <xsl:for-each 
               select="./*:CreditTransferPayment/*:PaymentTransaction/*:UserArea/*:Property/*:NameValue">
        <FGIACHFlat>
            <field1>
                <xsl:value-of select="'D'" />
                <xsl:call-template name="AddTrailingSpaces">
                    <xsl:with-param name="string" select="substring(substring-before(. 
                               [@name='SINO'],';'),1)" />
                    <xsl:with-param name="length" select="24" />
                </xsl:call-template>
                <xsl:value-of select="(substring-after(.[@name='SINO'],';'),';')" />
            </field1>
        </FGIACHFlat>
    </xsl:for-each>

当前输出我是这样得到的,但不想要这样。

<FGIACHFlat> 
    <field1>D852963 20210406;1520.00;1520.00;0.00;2789 852963 2021 FAIRVIEW L ;</field1> 
</FGIACHFlat> 
<FGIACHFlat> 
    <field1>DTEST12345 20210406;1000.00;1000.00;0.00;2789 TEST12345 2021 FAIRVIEW L ;</field1> 
</FGIACHFlat>

【问题讨论】:

  • 当前输出我得到这种方式,但不想要这些方式。 D852963 20210406; 1520.00; 1520.00; 0.00; 2789 852963 2021 FAIRVIEW L; FIEFA1> FGIACHFLAT> DTEST12345 20210406; 1000.00; 1000.00; 0.00; 2789 TEST12345 2021 FAIRVIEW L;
  • 1.请不要在 cmets 中发布代码。编辑您的问题并添加预期结果。 2. 说明您将使用哪个 XSLT 处理器。
  • 请给我们展示你想要的输出,同时展示函数AddTrailingSpaces的代码。

标签: xslt


【解决方案1】:

我现在已经让它工作了。 我使用的 xslt 代码是。 调用模板>

我的输入是这样的: 852963; 20210406;000000001520.00;000000001520.00;000000000000.00;2789 852963 2021 FAIRVIEW L 测试12345; 20210406;000000001000.00;000000001000.00;000000000000.00;2789 TEST12345 2021 FAIRVIEW L 我得到的输出是这样的:

D852963 20210406000000001520.00000000001520.00000000000000.002789 852963 2021 FAIRVIEW L DTEST12345 20210406000000001000.00000000001000.00000000000000.002789 TEST12345 2021 FAIRVIEW L

我在我们的应用程序中应用了一些逻辑,并通过 xslt 编码保留下来。 我想通过 xslt 编码应用所有逻辑,但我是 xslt 编码的新手。 现在它为我工作。 谢谢

【讨论】: