2014-11-26 2 views
1

Предположим, у меня есть список элементов, каждый со своим собственным элементом <id>. Также есть элемент <primaryId> (за пределами указанного списка), указав, какой из этих элементов является «основным». Как выбрать элемент 'primary' item <value>? Можно ли использовать XPath в .Net?XPath: выберите узел на основе значения другого узла

Результат в следующем примере должен быть <value>val2</value>.

<root> 
    <primaryId>2</primaryId> 
    <items> 
    <item> 
     <id>1</id> 
     <value>val1</value> 
    </item> 
    <item> 
     <id>2</id> 
     <value>val2</value> 
    </item> 
    </items> 
</root> 

ответ

3

Местоположение пути в XPath могут включать в себя условия в [].

Итак, сначала выберите основной узел ID:

/root/primaryId 

Сделать это условие, сравнить его с элементом идентификатора в контексте условия:

[id=/root/primaryId] 

Используйте его для фильтрации элемент узлы:

/root/items/item[id=/root/primaryId] 

И полное выражение:

/root/items/item[id=/root/primaryId]/value 
-1
<xsl:value-of select="/root/items/item[id=/root/primaryId]/value"/> 
+1

Как правило, описание того, что вы предлагаете или что изменилось, значительно улучшает ответ. – JoelC

+0

Если задан результат 2x2, то что еще, кроме 4, ожидается в качестве ответа? Это простой вопрос о xpath и xpath (внутри xslt) - это ответ. Это не могло быть проще. –

+1

См. Ответ ThW выше. – JoelC