带计数器的XSL循环?

sno*_*kin 0 xml xslt

我有一个xML,它有很多元素,有些看起来像这样:

<Images>
?
<Image>
<FileName>L_03AB1B13144B416A8E779E0010D27156_iList.jpg</FileName>
<SequenceNumber>8</SequenceNumber>
<IsDefault>False</IsDefault>
</Image>
?
<Image>
<FileName>L_36438628E6E343919D77A3D27877A650_iList.jpg</FileName>
<SequenceNumber>9</SequenceNumber>
<IsDefault>False</IsDefault>
</Image>
?
<Image>
<FileName>L_3E0BFE975FA04A46848C3B3D983C4DE7_iList.jpg</FileName>
<SequenceNumber>10</SequenceNumber>
<IsDefault>False</IsDefault>
</Image>
?
<Image>
<FileName>L_DAD3FA64670E40F5BD0B48343216BF76_iList.jpg</FileName>
<SequenceNumber>11</SequenceNumber>
<IsDefault>False</IsDefault>
</Image>
?
<Image>
<FileName>L_2522D5E120574582A926032E1DF4733F_iList.jpg</FileName>
<SequenceNumber>12</SequenceNumber>
<IsDefault>False</IsDefault>
</Image>
</Images>
Run Code Online (Sandbox Code Playgroud)

我想循环每个文件名,这对于每个文件都很容易,但是我想要计算它,并生成类似的东西(XML):

<pic_1>L_03AB1B13144B416A8E779E0010D27156_iList.jpg</pic_1>

<pic_2>L_36438628E6E343919D77A3D27877A650_iList.jpg</pic_2>
Run Code Online (Sandbox Code Playgroud)

等......(看看元素,1,2 ......)我该怎么做?

Tom*_*lak 7

以不同方式命名相同元素通常是一个坏主意.而不是<pic_1>, <pic_2><pic num="1">, <pic num="2">.

这使你的生活有很多后来与XML文档工作时更容易.XPath查询,XSLT转换,DOM操作 - 任何事情都会更简单,更加一致.

<xsl:template match="Image">
  <pic num="{position()}">
    <xsl:value-of select="FileName" />
  </pic>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 6

使用"xsl:element"标记:

<xsl:element name="pic_{position()}">
  <xsl:value-of select="FileName" />
</xsl:element>
Run Code Online (Sandbox Code Playgroud)