Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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
Java XSLT concat计数器,使用字段名使其成为动态的_Java_Xml_Pdf_Xslt - Fatal编程技术网

Java XSLT concat计数器,使用字段名使其成为动态的

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

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


然而,这并没有起作用。你能给我指出正确的方向吗?

我不确定源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!这正是我想要的