parser

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

 

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

XPath: получения заданного атрибута выбранного узла

G_Z 24.07.2004 01:47 / 24.07.2004 01:49

Товарищи, перерыл всю документацию, имеющиеся книги но ума так и не дал...

Имеем:
Выполняем запрос вида
descendant-or-self::*[@active= 1]
, стало быть, ищем узел с атрибутом active = 1.
По структуре документа такой узел может быть только один (так и есть:
count(descendant-or-self::*[@active= 1])
выдаёт 1).
Можно запрашивать и функцией вида
key('active', 1)
по заранее составленному ключу
<xsl:key name="active" match="section[@active]" use="@active"/>
, итог тот же – множество в один узел.

Нужно: получить значение атрибута uri выбранного узла.

[бьётся головой об стол]

Перепробовал кучу вариантов.
Даже
<xsl:for-each select="key('active', 1)">
	<a>
		<xsl:attribute name="href">
			<xsl:value-of select="@uri"/>
		</xsl:attribute>
		<img src="/img/logo_active.gif" width="78" height="35">
			<xsl:attribute name="border">
				<xsl:text>0</xsl:text>
			</xsl:attribute>
		</img>
	</a>
</xsl:for-each>
нету толку, видимо узел-то не контекстный. (Вообще на данном этапе идёт обработка корня (вызов этого шаблона из главного) т.о. контекстный – корень)

Можно конечно попробовать через DOM Парсером выдрать, но хочется сделать всё прямо в xsl.