XSLT concat 计数器与字段名称,使其动态

我正在使用以下 xslt 生成 xml。我想要做的是迭代然后根据计数器动态设置字段的名称。


我目前的 xslt 看起来像这样,但显然我错过了一些东西


<xsl:for-each select="list1">   

     <field name="tagName">

         <xsl:choose>

            <xsl:when test="something != 'null'">

                <value><xsl:value-of select="something" /></value>

            </xsl:when>

            <xsl:otherwise>

                <value></value>

            </xsl:otherwise>

        </xsl:choose>

    </field>

</xsl:for-each>

我想要的是字段名称类似于 tagName1、tagName2 等。


我尝试使用以下


 <field name=concat('tagName', position())>

然而这并没有奏效。你能为我指出正确的方向吗?


侃侃尔雅
浏览 82回答 1
1回答

函数式编程

我不确定源 XML 是什么样的,所以我在这里猜测。假设这是来源:<list1>&nbsp; <tag>foo</tag>&nbsp; <tag>bar</tag>&nbsp; <tag>baz</tag></list1>然后使用这个模板:<xsl:template match="/list1">&nbsp; <xsl:for-each select="tag">&nbsp; &nbsp;&nbsp; &nbsp; <field name="{concat('tag', position(), text())}"/>&nbsp; </xsl:for-each></xsl:template>将返回:<field name="tag1foo"/><field name="tag2bar"/><field name="tag3baz"/>这接近你想要的吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java