Счетчик конкатов XSLT с именем поля, чтобы сделать его динамическим - PullRequest
0 голосов
/ 05 марта 2019

Я работаю над созданием xml, используя следующий xslt.Я хочу сделать итерацию, а затем динамически установить имя поля на основе счетчика.

Мой текущий 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 Ответ

2 голосов
/ 05 марта 2019

Я не уверен, как выглядит исходный 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"/>

Это близко к тому, что вы хотели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...