Java XSLT concat计数器,使用字段名使其成为动态的
我正在使用以下xslt生成xml。我要做的是迭代,然后根据计数器动态设置字段的名称 我当前的xslt看起来像这样,但显然我缺少了一些东西Java XSLT concat计数器,使用字段名使其成为动态的,java,xml,pdf,xslt,Java,Xml,Pdf,Xslt,我正在使用以下xslt生成xml。我要做的是迭代,然后根据计数器动态设置字段的名称 我当前的xslt看起来像这样,但显然我缺少了一些东西 <xsl:for-each select="list1"> <field name="tagName"> <xsl:choose> <xsl:when test="something != 'null'"> <valu
<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())>
然而,这并没有起作用。你能给我指出正确的方向吗?我不确定源XML是什么样子,所以我在这里猜测 假设这是来源:
<list1>
<tag>foo</tag>
<tag>bar</tag>
<tag>baz</tag>
</list1>
福
酒吧
巴兹
然后使用此模板:
<xsl:template match="/list1">
<xsl:for-each select="tag">
<field name="{concat('tag', position(), text())}"/>
</xsl:for-each>
</xsl:template>
将返回此文件:
<field name="tag1foo"/>
<field name="tag2bar"/>
<field name="tag3baz"/>
这接近您想要的吗?我不确定源XML是什么样子,所以我在这里猜测 假设这是来源:
<list1>
<tag>foo</tag>
<tag>bar</tag>
<tag>baz</tag>
</list1>
福
酒吧
巴兹
然后使用此模板:
<xsl:template match="/list1">
<xsl:for-each select="tag">
<field name="{concat('tag', position(), text())}"/>
</xsl:for-each>
</xsl:template>
将返回此文件:
<field name="tag1foo"/>
<field name="tag2bar"/>
<field name="tag3baz"/>
这接近你想要的吗?在做这件事之前要三思:这会使处理结果变得困难。考虑使用属性代替。在做之前要三思:这使得处理结果变得困难。考虑使用属性代替。你也可以做<代码> <代码>。非常感谢。这正是我想要的。你也可以做。非常感谢@fafl!这正是我想要的