Вопрос по xslt, xml, xsl-fo –  твой друг ;

20

в XSL / FO обратный цикл для каждого.

например, XML

<data>
  <record id="1"/>
  <record id="2"/>
  <record id="3"/>
  <record id="4"/>
  <record id="5"/>
  <record id="6"/>
</data>

с XSL

<xsl:for-each select="descendant-or-self::*/record">
   <xsl:value-of select="@id"/>
</xsl:for-each>

Я ищу выход 654321, а не 123456

как это возможно?

Ваш Ответ

3   ответа
5

Да, Александр прав - забыл тип данных:

<xsl:for-each select="descendant-or-self::*/record">
   <xsl:sort select="@id" order="descending" data-type="number" />
   <xsl:value-of select="@id"/>
</xsl:for-each>

(без этого вы столкнетесь с проблемами сортировки чисел более 9)

3

XSL: сортировать твой друг ;

   <xsl:sort select="@id" order="descending" />
   <xsl:value-of select="@id"/>
</xsl:for-each>
29

использованиеXSL: сортировать не для заказа@id но для заказаposition():

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/data">
    <xsl:for-each select="descendant-or-self::*/record">
        <xsl:sort select="position()" data-type="number" order="descending"/>
        <xsl:value-of select="@id"/>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
именно то, что я искал, особенно спасибо, что справа от fo: flow для арабских документов используется 0,23 FOP (настроено и не может быть обновлено) Theresa Forster
Правильный ответ. Хотя для этого случая нет необходимостиdescendant-or-self::*/record, Это может быть простоrecord. user357812

Похожие вопросы