Я читал по разному вопросу о выборе уникальных узлов в документе (используя метод Muenchian), но в моем случае я не могу использовать ключи (или я не знаю как), потому что я работаю над набором узлов, а не с документом.XSL: как выбрать уникальные узлы в узле
И клавиши не могут быть установлены на узле. В принципе у меня есть переменный:
<xsl:variable name="limitedSet" select="
$deviceInstanceNodeSet[position() <= $tableMaxCol]"
/>
который содержит <deviceInstance>
узлов, которые сами по себе содержащим <structure>
элементов набор узлов может быть представлен следующим образом:
<deviceInstance name="Demux TSchannel" deviceIndex="0">
<structure name="DemuxTschannelCaps">
</structure>
</deviceInstance>
<deviceInstance name="Demux TSchannel" deviceIndex="1">
<structure name="DemuxTschannelCaps">
</structure>
</deviceInstance>
<deviceInstance name="Demux TSchannel" deviceIndex="3">
<structure name="otherCaps">
</structure>
</deviceInstance>
И я не знаю, чтобы выбрать <structure>
элементов, имеют только другое имя. Выбрать бы в этом примере вернуть два <structure>
элементов, являются:
<structure name="DemuxTschannelCaps"></structure>
<structure name="otherCaps"></structure>
Я попытался
select="$limitedSet//structure[not(@name=preceding::structure/@name)]"
но предшествующая ось проходит вдоль всего документа, а не на $limitedSet
?
Я застрял, может кто-то мне помочь. Спасибо.
Это является отличный ответ, который сэкономит мой день, большое спасибо за этот быстрый ответ. Этот сайт замечательный, и я зарегистрируюсь, чтобы дать оценку этому ответу. Tahnk вы так много. SeB. – SeB
Я подумал о вашем ключевом предложении, но это не сработает, потому что мне нужна одна структура из нескольких устройств, и ваше предложение работает только для одного устройства. – SeB
@SeB: Не уверен, что вы имеете в виду - мое предложение (по крайней мере, вторая версия ключа) будет работать на нескольких устройствах. Конечно, вам придется адаптировать выражение «use» к вашему фактическому XML, но это не должно быть невозможно. – Tomalak