java - 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())>
然而这并没有奏效。你能为我指出正确的方向吗?
解决方案
我不确定源 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"/>
这接近你想要的吗?
推荐阅读
- oracle - 使用 Informatica 将 Oracle 存储过程输出 clob 参数(以创建 JSON 格式)保存到文件中
- powershell - 一键重命名计算机并加入域的批处理脚本
- django - Django:如何从不同的数据库表中获取相关数据并将其显示为一个
- python - 如何从素数列表中获取不同的因子?
- graphql - 如何将 GraphQL 查询的结果(响应)作为参数(输入)传递给突变?
- android - RecyclerView 未使用 submitList() 和 LiveData 自动刷新
- php - 在运行 XAMPP 和 IIS 的电脑上设置 WordPress
- python - 如何在 Anaconda 上下载 OpenCV?
- ajax - 无法从 ajax 打印或回显控制器中的 post 值
- php - 如何设置 cookie_httponly?