2009-12-11 2 views
1

я редко работаю с XSLT-х, так что я не самый большой в этом, но мне было интересно, как идти о решении этой проблемы:XSLT - Обеспечение @attribute уникальность

<Element> 
    <childElement type="type1">Bob</childElement> 
    <childElement type="type1">Smith</childElement> 
    <childElement type="type2">Bob</childElement> 
</Element>" 

Я хочу, чтобы обеспечить соблюдение @type уникальность, где я бы просто захватил один из ChildElements, если у них такой же @type. Различные типы @types могут иметь одинаковое значение (в этом примере 2 боба будут в порядке). Любая помощь в том, как решить это в xslt?

+0

В то время как вы можете сделать некоторые проверки в XSLT, обычно это делается с помощью xml-схемы (xsd). взгляните на xs: unique и xs: key/xs: keyref – el2iot2

ответ

4

Вот XPath, чтобы захватить только уникальные значения @type ...

//childElement[not(@type=preceding::childElement/@type)] 

... результат вашего примера ...

Location: 3:5 
Description: /Element[1]/childElement[1] - Bob 
Location: 5:5 
Description: /Element[1]/childElement[3] - Bob 
+0

Блестящий! Я никогда не использовал xpath раньше, просто очень простые преобразования xslt. Спасибо кучу за ответ! – Cochese

Смежные вопросы