У меня есть XSL-файл, который был написан для использования с XSLT 2.0 Transformer, но теперь мне нужно изменить файл, чтобы он работал с XSLT 1.0. Я знаю, что for-each-group
-команда - это функция XSLT 2.0, но как насчет других? Как я могу изменить свой файл, чтобы он работал с 1.0?XSLT 2.0 изменить на 1.0
Вот XSL-файла:
<xsl:template match="ROWSET">
<ROWSET>
<xsl:for-each-group select="ROW" group-by="UKID">
<UEBERKUNDE>
<NAME><xsl:value-of select="UEBERKUNDE" /></NAME>
<xsl:copy-of select="UKID" />
<xsl:for-each-group select="current-group()" group-by="KUNDENNR">
<KUNDE>
<xsl:copy-of select="KUNDENNR" />
<xsl:copy-of select="KNAME1" />
<xsl:copy-of select="KNAME2" />
<xsl:copy-of select="KNAME3" />
<xsl:copy-of select="LAND" />
<xsl:copy-of select="PLZ" />
<xsl:copy-of select="ORT" />
<xsl:copy-of select="ADM" />
<xsl:copy-of select="KUNDENKLASSE" />
<xsl:copy-of select="MITARBEITER" />
<xsl:copy-of select="BELEGART" />
<EFAKTURA><xsl:value-of select="normalize-space(EFAKTURA)" /></EFAKTURA>
<WEBSTATUS><xsl:value-of select="normalize-space(WEBSTATUS)" /></WEBSTATUS>
<ZAHLUNGSBEDINGUNG><xsl:value-of select="normalize-space(ZAHLUNGSBEDINUNG)" /></ZAHLUNGSBEDINGUNG>
<xsl:for-each select="current-group()[count(. | key('rowsByMonth', concat(MONAT,'+',JAHR,'+',KUNDENNR))[1]) = 1]">
<ROW>
<xsl:copy-of select="JAHR" />
<xsl:copy-of select="MONAT" />
<xsl:copy-of select="HANDLING" />
<xsl:copy-of select="SOLLFRACHT" />
<xsl:for-each select="key('rowsByMonth', concat(MONAT,'+',JAHR,'+',KUNDENNR))">
<WARENGRUPPE>
<xsl:copy-of select="HGNAME" />
<xsl:copy-of select="HGID" />
<xsl:copy-of select="DG_BASIS" />
<xsl:copy-of select="EKECHT" />
<xsl:copy-of select="DB_BASIS" />
<xsl:copy-of select="NETTO" />
</WARENGRUPPE>
</xsl:for-each>
</ROW>
</xsl:for-each>
</KUNDE>
</xsl:for-each-group>
</UEBERKUNDE>
</xsl:for-each-group>
</ROWSET>
</xsl:template></xsl:stylesheet>
Заранее спасибо!
Предоставленный вами фрагмент, похоже, не имеет каких-либо функций 2.0, кроме 'for-each-group' и его аналогов' current-group() '. – JLRishe
Итак, как бы я изменил 'for-each-group', чтобы он работал? – gasparuff
Использование ключа() в середине означает, что у вас есть гибрид методов XSLT 1.0 (метод сортировки Muenchian) и XSLT 2.0 (для каждой группы). Это делает преобразование не столь простым, поскольку неясно намерение ключа(). Когда мне нужно делать вложенную группировку, я использую метод группировки на основе переменных (метод группировки на основе переменных XSLT на основе Google: XSLT). –