Похоже, он не сортирует по дате, и он возвращает мне кусок кода, который мне нужно отсортировать по дате и иметь возможность манипулировать данными, чтобы я мог поместить их в строки таблицы.
Вот так.
110 2009-10-15
100 2010-10-15
130 2008-10-15
Нет , код (если бы он был правильным) вывел бы строковое значение одного из элементов New
или Previous
смаксимум date
.
Вот основная проблема в вашем коде :
<xsl:for-each select="msxsl:node-set($mergedData)">
функция расширения msxsl:node-set()
возвращает дерево документа - не верхний элемент или фрагмент XML.Другими словами, он возвращает корневой узел: /
этого дерева документов.
Следовательно, <xsl:for-each>
выше выбирает только один узел , и этот узел имеетдочерние элементы, которые являются New
или Previous
элементами.Следовательно, сортировки не существует, поскольку результатом сортировки одного узла всегда является один и тот же узел.
Далее в коде:
<xsl:value-of select="."/>
Поскольку .
является корневым узломдля временного дерева вышеприведенная инструкция xslt создает строковое значение всего временного дерева, то есть объединение в порядке документа всех текстовых узлов в этом временном дереве.Это именно то, на что вы жалуетесь.
Решение :
Заменить :
<xsl:for-each select="msxsl:node-set($mergedData)">
на:
<xsl:for-each select="msxsl:node-set($mergedData)/*">
Теперь атрибут select xsl:for-each
выбирает все New
и Previous
верхних элементов в дереве, как это, очевидно, и требовалось.