首页 > 解决方案 > 如何在单循环中读取 2 个逗号分隔的字符串 - XSLT

问题描述

我有以下两个变量,它们在不同的 XSLT 变量中有多个逗号分隔的字符串值

Variable_01 : 88888,777777
Variable_02 : abc,xyz

现在我正在寻找以下输出

[{"Group":"88888", "Name":"abc"},{"Group":"777777", "Name":"xyz"}]

您能帮我上面输出的正确 XSLT 代码吗?

标签: xsltxslt-1.0ibm-datapowerexslt

解决方案


这是您可以查看的一种方式:

XSLT 2.0

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>

<xsl:variable name="Variable_01">88888,777777</xsl:variable>
<xsl:variable name="Variable_02">abc,xyz</xsl:variable>

<xsl:template match="/">
    <xsl:text>[</xsl:text>
    <xsl:for-each select="tokenize($Variable_01, ',')">
        <xsl:variable name="i" select="position()"/>
        <xsl:text>{"Group":"</xsl:text>
        <xsl:value-of select="." />
        <xsl:text>", "Name":"</xsl:text>
        <xsl:value-of select="tokenize($Variable_02, ',')[$i]" />
        <xsl:text>"}</xsl:text>
        <xsl:if test="position()!=last()">
            <xsl:text>,</xsl:text>
        </xsl:if>
    </xsl:for-each>
    <xsl:text>]</xsl:text>
</xsl:template>

</xsl:stylesheet>

结果

[{"Group":"88888", "Name":"abc"},{"Group":"777777", "Name":"xyz"}]

演示:http: //xsltransform.hikmatu.com/jyH9rLV


推荐阅读