Ein Mitarbeiter kann Manager, HR-Partner oder beides sein. Sie können Manager in einer beliebigen Anzahl von Kostenstellen sein. Sie können HR-Partner einer beliebigen Anzahl von Kostenstellen sein.XSLT Entfernen von Duplikaten aus der Gruppe
Wenn ich die Kombinationen, die ich brauche, aus jedem Datensatz heraushole, erhalte ich Duplikate. Mitarbeiter A und Mitarbeiter B melden sich an denselben Manager in derselben Kostenstelle und geben daher zwei Zeilen zurück. Eine für Mitarbeiter A und eine für Mitarbeiter B. Da ich ihre Mitarbeiter-IDs (nur Manager- und HR-Partner) nicht ziehen, erscheinen sie als doppelte Zeilen. Ich benutze derzeit '[not (. = Previous ::' ', um Duplikate zu eliminieren, überprüft jedoch die gesamte Datei und erlaubt nur einem Manager, zu einer Kostenstelle statt zu mehreren zu gehören. Wie kann ich die Prüfung NUR für die Gruppe durchführen (Kostenstelle)
Ich habe zwei zusammengesetzte Schlüssel (managerID, Kostenstellenidentifikation) und (hr Partner, Kostenstellenidentifikation) versucht, aber kämpfte damit bis es kam leider diesen Code über sie gespeichert chaotisch und nicht funktioniert ich Also, wenn das ist wirklich meine einzige Option, ich werde es neu zu schreiben und beheben von dort
XML-Input-Sample:...
<wd:Report_Data>
<wd:Report_Entry>
<wd:Sub_Employee_ID>123345678</wd:Sub_Employee_ID>
<wd:Cost_Center_ID>20000003</wd:Cost_Center_ID>
<wd:HR_Partner>
<wd:ID wd:type="Employee_ID">81025060</wd:ID>
</wd:HR_Partner>
<wd:HR_Partner>
<wd:ID wd:type="Employee_ID">81452340</wd:ID>
</wd:HR_Partner>
<wd:Manager>
<wd:Employee_ID>81055097</wd:Employee_ID>
</wd:Manager>
<wd:Role_ID>2005</wd:Role_ID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:Sub_Employee_ID>22345123</wd:Sub_Employee_ID>
<wd:Cost_Center_ID>20000003</wd:Cost_Center_ID>
<wd:HR_Partner>
<wd:ID wd:type="Employee_ID">81025060</wd:ID>
</wd:HR_Partner>
<wd:Manager>
<wd:Employee_ID>81055097</wd:Employee_ID>
</wd:Manager>
<wd:Role_ID>2005</wd:Role_ID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:Sub_Employee_ID>33424567</wd:Sub_Employee_ID>
<wd:Cost_Center_ID>20000003</wd:Cost_Center_ID>
<wd:HR_Partner>
<wd:ID wd:type="Employee_ID">81022549</wd:ID>
</wd:HR_Partner>
<wd:Manager>
<wd:Employee_ID>12312312</wd:Employee_ID>
</wd:Manager>
<wd:Role_ID>2005</wd:Role_ID>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:Sub_Employee_ID>72390123</wd:Sub_Employee_ID>
<wd:Cost_Center_ID>40000006</wd:Cost_Center_ID>
<wd:HR_Partner>
<wd:ID wd:type="Employee_ID">81025060</wd:ID>
</wd:HR_Partner>
<wd:Manager>
<wd:Employee_ID>81055097</wd:Employee_ID>
</wd:Manager>
<wd:Role_ID>2005</wd:Role_ID>
</wd:Report_Entry>
</wd:Report_Data>
gewünschte Ausgabe:
81055097;
20000003;
2005;
Manager
81025060;
20000003;
2005;
HR Partner
81452340
20000003;
2005;
HR Partner
12312312
20000003;
2005;
Manager
81022549;
20000003;
2005;
HR Partner
81055097;
40000006;
2005;
Manager
81025060;
40000006;
2005;
HR_Partner
Aktuelle Xslt:
<xsl:template match="wd:Report_Data/wd:Report_Entry">
<xsl:for-each-group select="." group-by="wd:Cost_Center_ID">
<!-- Manager Line -->
<!-- Filter Duplicates -->
<xsl:sort select="wd:Manager/wd:Employee_ID"/>
<xsl:if test="wd:Manager/wd:Employee_ID[not(.=preceding::wd:Manager/wd:Employee_ID)]">
<xsl:value-of select="wd:Manager/wd:Employee_ID"/>;
<xsl:value-of select="wd:Cost_Center_ID"/>;
<xsl:value-of select="wd:Role_ID"/>;
<xsl:value-of>Manager</xsl:value-of>
<xsl:value-of select="$linefeed"/>
</xsl:if>
<!-- HR Partner Line -->
<!-- Filter Duplicates -->
<xsl:for-each select="../wd:HR_Partner/wd:ID[@wd:type='Employee_ID']">
<xsl:if test=".[not(.=preceding::wd:HR_Partner/wd:ID[@wd:type='Employee_ID'])]">
<xsl:value-of select="wd:ID[@wd:type='Employee_ID']"/>;
<xsl:value-of select="../wd:Cost_Center_ID"/>;
<xsl:value-of select="../wd:Role_ID"/>;
<xsl:value-of>HR Partner</xsl:value-of>
<xsl:value-of select="$linefeed"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each-group>
</xsl:template>
ja! Danke! – jlstunt