Я хочу написать XSLT, в котором я могу удалить дубликат узла при переводе. В приведенном ниже сообщении, поскольку температурный код тот же для 1 и 3 узла, он для меня дублируется.Удалить дубликат узла в XSLT
Образец входного сообщения, которые я использую
<document>
<party>
<gtin>1000909090</gtin>
<pos>
<attrGroupMany name="temperatureInformation">
<row>
<attr name="temperatureCode">STORADE</attr>
<attrQual name="maximumTemperature" qual="FAH">80</attrQual>
<attrQual name="minimumTemperature" qual="ABC">10</attrQual>
</row>
<row>
<attr name="temperatureCode">HANDLING</attr>
<attrQual name="maximumTemperature" qual="XYZ">20</attrQual>
<attrQual name="minimumTemperature" qual="PQR">30</attrQual>
</row>
<row>
<attr name="temperatureCode">STORADE</attr>
<attrQual name="maximumTemperature" qual="FAH">80</attrQual>
<attrQual name="minimumTemperature" qual="ABC">10</attrQual>
</row>
</attrGroupMany>
</pos>
</party>
</document>
Я использую Ниже XSLT для преобразования сообщения образца
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="document">
<CatalogItem>
<RelationshipData>
<Relationship>
<RelationType>temperatureInformation_details</RelationType>
<RelatedItems>
<xsl:for-each select="party/pos/attrGroupMany[@name ='temperatureInformation']/row">
<RelatedItem>
<xsl:attribute name="referenceKey">
<xsl:value-of select="concat('temperatureInformation_details','-',attr[@name='temperatureCode'],'-',attrQual/@name,'-',attrQual/@qual,'-',attrQual )"/>
</xsl:attribute>
</RelatedItem>
</xsl:for-each>
</RelatedItems>
</Relationship>
</RelationshipData>
</CatalogItem>
</xsl:template>
</xsl:stylesheet>
Но выходной ток является неправильным, то дублированное значение STORADE
<?xml version="1.0" encoding="UTF-8"?>
<CatalogItem>
<RelationshipData>
<Relationship>
<RelationType>temperatureInformation_details</RelationType>
<RelatedItems>
<RelatedItem referenceKey="temperatureInformation_details-STORADE-maximumTemperature-FAH-80" />
<RelatedItem referenceKey="temperatureInformation_details-HANDLING-maximumTemperature-XYZ-20" />
<RelatedItem referenceKey="temperatureInformation_details-STORADE-maximumTemperature-FAH-80" />
</RelatedItems>
</Relationship>
</RelationshipData>
</CatalogItem>
Правильный выход должен быть таким, как указано ниже, при котором повторяющаяся температура удаляемый код удаляется.
<?xml version="1.0" encoding="UTF-8"?>
<CatalogItem>
<RelationshipData>
<Relationship>
<RelationType>temperatureInformation_details</RelationType>
<RelatedItems>
<RelatedItem referenceKey="temperatureInformation_details-STORADE-maximumTemperature-FAH-80" />
<RelatedItem referenceKey="temperatureInformation_details-HANDLING-maximumTemperature-XYZ-20" />
</RelatedItems>
</Relationship>
</RelationshipData>
</CatalogItem>
Все входы будут очень полезны
Начните здесь: http://www.jenitennison.com/xslt/grouping/muenchian.html Затем найдите некоторые из многочисленных примеров группировки Muenchian здесь на SO. –