Есть ли способ получить элементы предыдущей итерации.выборка элемента предыдущей итерации в xslt 1.0
У меня есть следующий документ XML (сокращенно для лучшего обзора):
<requests>
<request>
<id>514</id>
<status>accepted</status>
<updated>"2013-10-07T12:00:51.508"</updated>
<query>
<![CDATA[Select column1 from table1]]>
</query>
</request>
<request>
<id>22</id>
<status>rejected</status>
<updated>"2012-11-07T12:00:51.508"</updated>
<query>
<![CDATA[Select column3 from table2]]>
</query>
</request>
<request>
<id>7523</id>
<status>accepted</status>
<updated>"2012-01-07T02:00:52.508"</updated>
<query>
<![CDATA[Select column8 from table3]]>
</query>
</request>
<request>
<id>84</id>
<status>accepted</status>
<updated>"2000-12-07T12:00:51.1"</updated>
<query>
<![CDATA[Select column1 from table1]]>
</query>
</request>
<request>
<id>999</id>
<status>accepted</status>
<updated>"2006-12-07T12:00:51.1"</updated>
<query>
<![CDATA[Select column1 from table1]]>
</query>
</request>
.
.
.
</requests>
Теперь я должен выбрать все узлы со статусом: «принято» группировать их по столу, а затем в колонке, которая запрашивается и для каждого столбца выбирают только два запроса с самым последним временем обновления. Вывод должен быть идентификатором этого узла, заданным как простой текст. Например, для запроса «Выбрать столбец1 из таблицы 1» следует выбрать 514 и 999 для вывода, тогда как 84 нет. Я прочитал о методе muenchian, но я не смог применить его в анализируемом тексте (в этом случае текст в запросе). Вот почему я попытался выяснить способ получения информации из предыдущей итерации, чтобы я мог сортировать узлы по заданным критериям и находить идентификатор, который я ищу.
Например:
<xsl:for-each select="*[local-name()='requests']/*[local-name='request'][@status='accepted']" >
<xsl:sort select="string(*[local-name()='query']/text())" order="text" data-type="number" />
<xsl:sort select="@pdated" order="descending" data-type="number" />
<xsl:value-of select="string(preceding-sibling::*[1]/*[local-name()='query']/text()) />
Сейчас это работает, но не так, как я хочу его, он возвращает предыдущий соседний элемент в документе, но не текст запроса из предыдущей итерации. Что-то вроде этого возможно? Благодаря
Примером может служить пример ввода и запрошенный выход. - P.S. Есть ли причина использовать такие неудобные выражения, как '* [local-name() = 'requests']' и т. Д.? –
@ michael.hor257k Некоторые люди избегают научиться использовать пространства имен любой ценой. – JLRishe