我有下面的XML文件,這是從一個Oracle數據庫導出:http://pastebin.com/0yPcc7HTXSLT無法弄清楚如何正確組
我需要將其轉換爲以下結構:
<?xml version="1.0" encoding="UTF-8"?>
<ROWSET>
<KUNDE>
<KUNDENNR>59957</KUNDENNR>
<ANSPRECHPARTNERS>
<ANSPRECHPARTNER>
<ANSPRECHNR>3</ANSPRECHNR>
<FUNKTION>lfd. Kontakt, </FUNKTION>
<VORNAME>Some </VORNAME>
<NACHNAME>Dude </NACHNAME>
<ABTEILUNG>Einkauf </ABTEILUNG>
<EMAIL>[email protected]</EMAIL>
<TELEFON>123456789</TELEFON>
<PREISLISTEN>
<PREISLISTE>Katalog </PREISLISTE>
<PREISLISTE>Y OO </PREISLISTE>
<PREISLISTE>Kopierpapier "A" </PREISLISTE>
<PREISLISTE>Aktion Internet </PREISLISTE>
<PREISLISTE>Tinte Toner "H" </PREISLISTE>
<PREISLISTE>News Internet </PREISLISTE>
</PREISLISTEN>
<SPESEN>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
</SPESEN>
</ANSPRECHPARTNER>
<ANSPRECHPARTNER>
<ANSPRECHNR>1</ANSPRECHNR>
<FUNKTION>Sachbearbeitung </FUNKTION>
<VORNAME>Another </VORNAME>
<NACHNAME>Dudarina </NACHNAME>
<ABTEILUNG>Einkauf </ABTEILUNG>
<EMAIL>[email protected]</EMAIL>
<TELEFON>2</TELEFON>
<PREISLISTEN>
<PREISLISTE>Katalog </PREISLISTE>
<PREISLISTE>Y OO </PREISLISTE>
<PREISLISTE>Kopierpapier "A" </PREISLISTE>
<PREISLISTE>Aktion Internet </PREISLISTE>
<PREISLISTE>Tinte Toner "H" </PREISLISTE>
<PREISLISTE>News Internet </PREISLISTE>
</PREISLISTEN>
<SPESEN>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
</SPESEN>
</ANSPRECHPARTNER>
</ANSPRECHPARTNERS>
</KUNDE>
</ROWSET>
我已經嘗試了幾個小時的不同事情,但我無法找到正確的方法。這是我的XSLT文件看起來像:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:key name="rowsByKDNR" match="ROW" use="concat(KUNDENNR, '+', ANSPRECHNR)"></xsl:key>
<xsl:template match="ROWSET">
<ROWSET>
<xsl:for-each-group select="ROW" group-by="KUNDENNR">
<KUNDE>
<xsl:copy-of select="KUNDENNR" />
<ANSPRECHPARTNERS>
<xsl:for-each select="current-group()[count(. | key('rowsByMonth', concat(KUNDENNR, '+', ANSPRECHNR))[1]) = 1]">
<ANSPRECHPARTNER>
<xsl:copy-of select="ANSPRECHNR" />
<xsl:copy-of select="FUNKTION" />
<xsl:copy-of select="VORNAME" />
<xsl:copy-of select="NACHNAME" />
<xsl:copy-of select="ABTEILUNG" />
<xsl:copy-of select="EMAIL" />
<xsl:copy-of select="TELEFON" />
<PREISLISTEN>
<xsl:for-each select="key('rowsByKDNR', concat(KUNDENNR, '+', ANSPRECHNR))">
<xsl:copy-of select="PREISLISTE" />
</xsl:for-each>
</PREISLISTEN>
<SPESEN>
<xsl:for-each select="key('rowsByKDNR', concat(KUNDENNR, '+', ANSPRECHNR))">
<SPESE>
<xsl:value-of select="SPESEN" />
</SPESE>
</xsl:for-each>
</SPESEN>
</ANSPRECHPARTNER>
</xsl:for-each>
</ANSPRECHPARTNERS>
</KUNDE>
</xsl:for-each-group>
</ROWSET>
</xsl:template></xsl:stylesheet>
但是這給了我下面的結果:在PREISLISTEN
和SPESEN
<?xml version="1.0" encoding="UTF-8"?>
<ROWSET>
<KUNDE>
<KUNDENNR>59957</KUNDENNR>
<ANSPRECHPARTNERS>
<ANSPRECHPARTNER>
<ANSPRECHNR>3</ANSPRECHNR>
<FUNKTION>lfd. Kontakt, </FUNKTION>
<VORNAME>Some </VORNAME>
<NACHNAME>Dude </NACHNAME>
<ABTEILUNG>Einkauf </ABTEILUNG>
<EMAIL>[email protected]</EMAIL>
<TELEFON>123456789</TELEFON>
<PREISLISTEN>
<PREISLISTE>Katalog </PREISLISTE>
<PREISLISTE>Y OO </PREISLISTE>
<PREISLISTE>Kopierpapier "A" </PREISLISTE>
<PREISLISTE>Aktion Internet </PREISLISTE>
<PREISLISTE>Tinte Toner "H" </PREISLISTE>
<PREISLISTE>News Internet </PREISLISTE>
<PREISLISTE>Katalog </PREISLISTE>
<PREISLISTE>Y OO </PREISLISTE>
<PREISLISTE>Kopierpapier "A" </PREISLISTE>
<PREISLISTE>Aktion Internet </PREISLISTE>
<PREISLISTE>Tinte Toner "H" </PREISLISTE>
<PREISLISTE>News Internet </PREISLISTE>
</PREISLISTEN>
<SPESEN>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
</SPESEN>
</ANSPRECHPARTNER>
<ANSPRECHPARTNER>
<ANSPRECHNR>1</ANSPRECHNR>
<FUNKTION>Sachbearbeitung </FUNKTION>
<VORNAME>Another </VORNAME>
<NACHNAME>Dudarina </NACHNAME>
<ABTEILUNG>Einkauf </ABTEILUNG>
<EMAIL>[email protected]</EMAIL>
<TELEFON>2</TELEFON>
<PREISLISTEN>
<PREISLISTE>Katalog </PREISLISTE>
<PREISLISTE>Y OO </PREISLISTE>
<PREISLISTE>Kopierpapier "A" </PREISLISTE>
<PREISLISTE>Aktion Internet </PREISLISTE>
<PREISLISTE>Tinte Toner "H" </PREISLISTE>
<PREISLISTE>News Internet </PREISLISTE>
<PREISLISTE>Katalog </PREISLISTE>
<PREISLISTE>Y OO </PREISLISTE>
<PREISLISTE>Kopierpapier "A" </PREISLISTE>
<PREISLISTE>Aktion Internet </PREISLISTE>
<PREISLISTE>Tinte Toner "H" </PREISLISTE>
<PREISLISTE>News Internet </PREISLISTE>
</PREISLISTEN>
<SPESEN>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>Sonderbeschaffungskosten </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
<SPESE>MM-Zuschlag55 3.6 </SPESE>
</SPESEN>
</ANSPRECHPARTNER>
</ANSPRECHPARTNERS>
</KUNDE>
</ROWSET>
元素纔出現過於頻繁。我做錯了什麼,爲了使它工作,我需要改變什麼?
預先感謝您
並張貼樣式表,你想要什麼? –
不,因爲'Spesen'和'Preislisten'中的元素多次出現 – gasparuff