XSLT concat计数器具有使它动态化的字段名称

时间:2019-03-05 14:35:29

标签: java xml pdf xslt

我正在使用以下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>

我想要的是Name字段应该是tagName1,tagName2等。

我尝试使用以下

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

但是那没有用。你能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

我不确定源XML是什么样子,所以我在这里猜测。

假设这是来源:

countries = restClient.readEntity(
                    restClient.getWebTargetByPath("country")
                            .request(MediaType.APPLICATION_XML, RestClient.APPLICATION_JSON)
                            .get(), new GenericType<List<Country>>() {
                    });

然后使用此模板:

<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>

这接近您想要的吗?