Выбор набора узлов по идентификатору в umbraco - PullRequest
1 голос
/ 13 июня 2009

Есть ли в umbraco более прямой способ итерации узлов на основе списка идентификаторов, чем этот?

$currentPage/ancestor-or-self::root/descendant::node[contains($idList, @id)]

Мне просто любопытно. Кажется неуместным проходить дерево вверх от узла currentPage, чтобы найти корень, прежде чем вернуться обратно вниз.

Ответы [ 2 ]

0 голосов
/ 13 июня 2009

Вероятно, было бы более эффективно и проще определить ключ xsl: на интересующих вас узлах, а затем извлечь их с помощью функции key ().

<xsl:key name="node-ids" match="node" use="id"/>
<!-- put the "at" sign in front of "id",
  a blockquote is generated when I try it -->
<xsl:for-each select="$currentPage">
  <xsl:apply-templates select="key( 'node-by-id', $idList)"/>
</xsl:for-each>

См .: Функция key () (spec) . Обратите внимание, что второй аргумент может иметь тип node-set. Если ваш $ idList является строкой, разделенной запятыми, вы можете перейти на набор узлов.

0 голосов
/ 13 июня 2009

Вы можете использовать атрибут @path, который содержит список csv идентификаторов предков узлов. Тогда просто возьмите первый или тот, который представляет интерес.

Другой метод может заключаться в использовании @level для выбора узла в предках на определенной глубине в дереве.

Не перед моим компьютером в данный момент будет обновляться с более подробной информацией, когда я буду.

...