Re[3]: [xslt] Непонятка с xsl:key
От: hredwolf  
Дата: 05.02.12 13:02
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>Поскольку generate-id с nodeset-ом в аргументе равнозначен generate-id(nodeset[1]), то вызов ключа для потомков items2 будет находить элементы из items2 только в том случае, если элементов с соответствующим src нет в items1 (document order и все такое), а поскольку они там есть, то мы имеем то, что имеем. В данном случае можно делать составной ключ — use="concat(ancestor::items/@name, '|', @src)" — это даст возможность использовать ключ в нужном контексте.


L>Не надо этого делать, это плохой подход — завтра у вас окажется, что items встречается палка в атрибуте name и все, приплыли.

L>Правильный подход описан двумя постами ниже.

Насчет имени и палки вы правы, но это не значит, что сам тема составных ключей плоха, просто их надо использовать с умом, вот и все.
По теме: use="concat(generate-id(ancestor::items), '|', @src)". По спецификации generate-id не вернет палку, так что generate-id + | + str — всегда однозначно определенный идентификатор элемента с палкой и с какой-то строкой на конце.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.