XSL петля со счетчиком? - PullRequest
       1

XSL петля со счетчиком?

0 голосов
/ 28 января 2011

У меня есть 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>

Я хотел бы зациклить каждое имя файла, что легко для for-each, но я хочу посчитать его и создать что-то подобное (XML):

<pic_1>L_03AB1B13144B416A8E779E0010D27156_iList.jpg</pic_1>

<pic_2>L_36438628E6E343919D77A3D27877A650_iList.jpg</pic_2>

и т.д ... (взгляните на элементы, 1,2 ...) Как мне это сделать?

Ответы [ 2 ]

7 голосов
/ 28 января 2011

Обычно плохая идея называть равные элементы по-разному. Вместо <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>
6 голосов
/ 28 января 2011

Используйте тег "xsl: element":

<xsl:element name="pic_{position()}">
  <xsl:value-of select="FileName" />
</xsl:element>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...