従業員は、マネージャ、HRパートナ、またはその両方になることができます。彼らは、任意の数のコストセンターのマネージャーになることができます。それらは、任意の数のコストセンターのHRパートナーになることができます。XSLTグループからの重複の削除
私はすべてのレコードから必要な組み合わせを引き出すと、重複を受け取ります。従業員Aと従業員Bは、同じ原価センタの同じマネージャにレポートするので、2行を返します。従業員Aと従業員Bの従業員IDを取得しません(マネージャとHRパートナーのみ)。重複した行として表示されます。私は現在、重複を排除するために、[。= preceding :: 'を使用していますが、ファイル全体をチェックし、マネージャが倍数ではなく1つのコストセンターにしか属していないようにしています。
私は2つの複合キー(managerID、コストセンターID)と(時間パートナー、コストセンターID)を試しましたが、到達するまで苦労しました。汚いと私は残念ながらそれ以上にこのコードを保存して働いていなかったことは本当に私の唯一の選択肢だ場合、私はそれを書き換えて、そこからトラブルシューティングする必要がありますので
入力XMLサンプル:。。。
<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>
所望の出力:
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
現在の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>
はい!ありがとうございました! – jlstunt