Здесь я рассмотрел несколько ответов и не могу обернуть голову вокруг клавиш и удаления дублирующих элементов. В моем случае использования у меня есть список вложений в случайном порядке. Для вывода мне нужно вывести вложение, только если оно уникально как по имени файла, так и по размеру файла
Вот мой вклад:
<Attachments NR="1">
<objID>351890194</objID>
<ID>351890194</ID>
<ShortName />
<Name />
<SeqNr>1</SeqNr>
<AttachmentType />
<bpo_objid>351802594</bpo_objid>
<cal_id>351890107</cal_id>
<cal_objid>351890196</cal_objid>
<Description />
<edi_objid>351803168</edi_objid>
<EditTimeUTC>2018-10-11 12:32:01.0</EditTimeUTC>
<ema_objid>351890195</ema_objid>
<FileName>autoframeworkIncident.txt</FileName>
<FilePath>/mnt/nfs/attachmentstore/2018/10/11/351890194/</FilePath>
<FileSizeKB>200</FileSizeKB>
<IsPartOfDashboard>N</IsPartOfDashboard>
<rgr_objid />
<sol_objid />
</Attachments>
<Attachments NR="2">
<objID>351890176</objID>
<ID>351890176</ID>
<ShortName />
<Name />
<SeqNr>1</SeqNr>
<AttachmentType />
<bpo_objid>351802594</bpo_objid>
<cal_id>351890107</cal_id>
<cal_objid>351890178</cal_objid>
<Description />
<edi_objid>351803168</edi_objid>
<EditTimeUTC>2018-10-11 12:30:17.0</EditTimeUTC>
<ema_objid>351890177</ema_objid>
<FileName>autoframeworkIncident.txt</FileName>
<FilePath>/mnt/nfs/attachmentstore/2018/10/11/351890176/</FilePath>
<FileSizeKB>0</FileSizeKB>
<IsPartOfDashboard>N</IsPartOfDashboard>
<rgr_objid />
<sol_objid />
</Attachments>
<Attachments NR="3">
<objID>351891151</objID>
<ID>351891151</ID>
<ShortName />
<Name />
<SeqNr>10</SeqNr>
<AttachmentType />
<bpo_objid>351781152</bpo_objid>
<cal_id>351890107</cal_id>
<cal_objid>351891153</cal_objid>
<Description />
<edi_objid>1000005000</edi_objid>
<EditTimeUTC>2018-10-11 20:28:20.0</EditTimeUTC>
<ema_objid>351891152</ema_objid>
<FileName>Test Attachment 1.txt</FileName>
<FilePath>/mnt/nfs/attachmentstore/2018/10/11/351891151/</FilePath>
<FileSizeKB>0</FileSizeKB>
<IsPartOfDashboard>N</IsPartOfDashboard>
<rgr_objid />
<sol_objid />
</Attachments>
<Attachments NR="4">
<objID>351890230</objID>
<ID>351890230</ID>
<ShortName />
<Name />
<SeqNr>10</SeqNr>
<AttachmentType />
<bpo_objid>351781152</bpo_objid>
<cal_id>351890107</cal_id>
<cal_objid>351890232</cal_objid>
<Description />
<edi_objid>1000005000</edi_objid>
<EditTimeUTC>2018-10-11 12:35:20.0</EditTimeUTC>
<ema_objid>351890231</ema_objid>
<FileName>autoframeworkIncident.txt</FileName>
<FilePath>/mnt/nfs/attachmentstore/2018/10/11/351890230/</FilePath>
<FileSizeKB>0</FileSizeKB>
<IsPartOfDashboard>N</IsPartOfDashboard>
<rgr_objid />
<sol_objid />
</Attachments>
<Attachments NR="5">
<objID>351890199</objID>
<ID>351890199</ID>
<ShortName />
<Name />
<SeqNr>10</SeqNr>
<AttachmentType />
<bpo_objid>351781152</bpo_objid>
<cal_id>351890107</cal_id>
<cal_objid>351890201</cal_objid>
<Description />
<edi_objid>1000005000</edi_objid>
<EditTimeUTC>2018-10-11 12:33:20.0</EditTimeUTC>
<ema_objid>351890200</ema_objid>
<FileName>autoframeworkIncident.txt</FileName>
<FilePath>/mnt/nfs/attachmentstore/2018/10/11/351890199/</FilePath>
<FileSizeKB>0</FileSizeKB>
<IsPartOfDashboard>N</IsPartOfDashboard>
<rgr_objid />
<sol_objid />
</Attachments>
В моем выводе мне нужно удалить элементы с одинаковыми FileName AND FileSizeKB. Я понимаю, что использование ключей и группировка, вероятно, способ сделать это, но мне пока не повезло.
Вот что у меня есть в моем шаблоне XSLT:
<xsl:key name="kAttachmentByFileName" match="//Attachments" use="FileName"/>
<xsl:for-each select="//Attachments">
<xsl:copy-of select="//Attachments[generate-id()=generate-id(key('kAttachmentByFileName', .)[1])]"/>
<vbo:Attachments>
<vbo:Attachment>
<cmn:Name xmlns:cmn="xxxxxx">
<xsl:value-of select="FileName" />
</cmn:Name>
<cmn:BinaryObject xmlns:cmn="xxxx">
<xsl:value-of select="DataBase64" />
</cmn:BinaryObject>
</vbo:Attachment>
</vbo:Attachments>
</xsl:for-each>