Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用xslt编码分离xml中的分隔值_Xslt - Fatal编程技术网

如何使用xslt编码分离xml中的分隔值

如何使用xslt编码分离xml中的分隔值,xslt,Xslt,在我们的应用程序中,我们使用xslt编码将输入xml转换为输出xml。 我正在使用下面的代码。但它只分隔分号前的第一个字段。 同样地,我希望分离输出xml中的每个值,以便可以将尾随空格或前导零添加到所需的字段中。SINO是我们的供应商编号,删除的值是其值,如价格等 如何分离每个值并写入同一个xml标记 我的意见: <UserArea> <Property> <NameValue name="SINO">852963;

在我们的应用程序中,我们使用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>

852963;20210406;1520.00;1520.00;0.00;2789       852963        
2021年美景湖
测试12345;20210406;1000.00;1000.00;0.00;2789
TEST12345 2021美景L
我尝试的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;27898529632021Fairview L;
DTEST12345 20210406;1000.00;1000.00;0.00;2789测试12345 2021美景L;

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

我的意见是: 852963 ; 20210406;000000001520.00;000000001520.00;000000000000.00;2789 852963 2021美景镇L 测试12345;20210406;000000001000.00;000000001000.00;000000000000.00;2789测试12345 2021美景镇L 我得到的预期结果是:

D852963 20210406000000001520.00000000001520.00000000000000.002789 2021美景湖852963 DTEST12345 20210406000000001000.000000000011000.00000000000000.002789测试12345 2021 FAIRVIEW L 我在应用程序中应用了一些逻辑,并通过xslt编码保留了这些逻辑。 我想通过xslt编码应用所有逻辑,但我对xslt编码是新手。 现在它对我有用。
谢谢

当前输出我采用这种方式,但不希望采用这种方式。D852963 20210406;1520.00;1520.00;0.00;27898529632021Fairview L;DTEST12345 20210406;1000.00;1000.00;0.00;2789测试12345 2021美景L;1.请不要在评论中发布代码。编辑您的问题并添加预期结果。2.说明您将使用哪个XSLT处理器。请向我们显示您想要的输出,并显示函数的代码
AddTrailingSpaces