I가 오라클-DB에서 내 보낸 다음 XML 파일 :XSLT 방법 그룹에 알아낼 수 없습니다 제대로
<?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>
: 나는 다음과 같은 구조로 변환 할 필요가
http://pastebin.com/0yPcc7HT
나는 여러 시간 동안 여러 가지 일을 시도했지만, 올바르게 수행하는 법을 알 수 없습니다. 이건 내 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>
요소가 너무 자주 나타납니다. 내가 잘못하고있는 것은 무엇이고 그것을 작동시키기 위해 무엇을 바꾸어야합니까?
당신은 XSLT 2.0 프로세서와for-each-group
을 사용할 수 있습니다 가정, 사전에 모든
이 게시 된 스타일 시트가 원하는 게 무엇을 다음과 같은 결과를 만들어? –
아니요, 'Spesen'과'Preislisten '의 요소가 여러 번 나타나기 때문에 – gasparuff