parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

OFF // XSL // вопрос: как выбрать узел для сортировки динамически?

Rafael 16.07.2008 14:20 / 16.07.2008 14:24

Формируетья такое дерево:
<blog_list hit_id="2" sort="title">
	<item id="0" parent_id="0" is_published="1">
		<title>Персональный блог</title>
		<dir>/</dir>
	</item>
	<item hit="yes" id="2" parent_id="0" is_published="1">
		<title>Новости сайта</title>
		<dir>news</dir>
	</item>
	<item id="1" parent_id="0" is_published="1">
		<title>Pro Байки</title>
		<dir>bikes</dir>
		<item id="3" parent_id="1" is_published="1">
			<title>Продажа-покупка</title>
			<dir>sale</dir>
		</item>
	</item>
</blog_list>
Есть необходимость сформировать на его основе список:
<xsl:for-each select="blog_list//item">
<xsl:sort order="ascending" select="Указать динамически узел"/>
	<li>
		<a>
			<xsl:variable name="blog_id"><xsl:value-of select="@id"/></xsl:variable>
			<xsl:attribute name="href">
				<xsl:text>/blog</xsl:text><xsl:apply-templates select="//blog_list//item[@id = $blog_id]" mode="path"/>
			</xsl:attribute>
			<xsl:value-of select="title"/><xsl:text> - </xsl:text>
		</a>
	</li>
</xsl:for-each>
Есть необходимость выбрать узел для сортировки динамически. Просто сравнить /name() и @sort не получается.

Parser-ом сортировать не хочеться, т.к.
1. планируется дерево кэшировать и менять только параметр сортировки.
2. список Parser-ом формируеться в виде дерева а из XSL-шаблона должен выйти линейный список.