[英]XSLT 2.0 change to 1.0
I have a XSL-File which has been written for being used with a XSLT 2.0 Transformer, but now I need to change the file in order to make it work with XSLT 1.0. 我有一个XSL文件,该文件是为与XSLT 2.0 Transformer一起使用而编写的,但是现在我需要更改文件才能使其与XSLT 1.0一起使用。 I know the for-each-group
-command is a XSLT 2.0 feature, but what about all the other things? 我知道for-each-group
group-命令是XSLT 2.0功能,但是其他所有功能又如何呢? How would I change my file to make it work with 1.0? 如何更改文件以使其与1.0兼容?
Here's the XSL-File: 这是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>
Thanks in advance! 提前致谢!
If you want to do grouping in XSLT 1.0 then see http://www.jenitennison.com/xslt/grouping/muenchian.xml for simply "group by" and http://www.biglist.com/lists/xsl-list/archives/200101/msg00070.html for nested grouping. 如果要在XSLT 1.0中进行分组,请参阅http://www.jenitennison.com/xslt/grouping/muenchian.xml,以简单地“分组依据”和http://www.biglist.com/lists/xsl-list /archives/200101/msg00070.html用于嵌套分组。
So 所以
<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">
roughly translate into two keys 大致翻译成两个键
<xsl:key name="by-ukid" match="ROW" use="UKID"/>
<xsl:key name="by-nr" match="ROW" use="concat(UKID, '|', KUNDENNR)"/>
and 和
<ROWSET>
<xsl:for-each select="ROW[generate-id() = generate-id(key('by-ukid',UKID)[1])]">
<UEBERKUNDE>
<NAME><xsl:value-of select="UEBERKUNDE" /></NAME>
<xsl:copy-of select="UKID" />
<xsl:for-each select="key('by-ukid', UKID)[generate-id() = generate-id(key('by-nr', concat(UKID, '|', KUNDENNR))[1])]">
If you have further nested grouping you need more keys with concatenated key values. 如果您有进一步的嵌套分组,则需要更多具有级联键值的键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.