這種劃分源XML:複雜的「選擇」
<root>
<!-- a and b have the same date entries, c is different -->
<variant name="a">
<booking>
<date from="2017-01-01" to="2017-01-02" />
<date from="2017-01-04" to="2017-01-06" />
</booking>
</variant>
<variant name="b">
<booking>
<date from="2017-01-01" to="2017-01-02" />
<date from="2017-01-04" to="2017-01-06" />
</booking>
</variant>
<variant name="c">
<booking>
<date from="2017-04-06" to="2017-04-07" />
<date from="2017-04-07" to="2017-04-09" />
</booking>
</variant>
</root>
我想組的三個變種,以便每個日期相同@from
和@to
每個變種要相對集中。
我的嘗試是:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"></xsl:output>
<xsl:template match="root">
<variants>
<xsl:for-each-group select="for $i in variant return $i" group-by="booking/date/@from">
<group>
<xsl:attribute name="cgk" select="current-grouping-key()"/>
<xsl:copy-of select="current-group()"></xsl:copy-of>
</group>
</xsl:for-each-group>
</variants>
</xsl:template>
</xsl:stylesheet>
但是這給了太多組。 (如何)這可能實現?
你得到的輸出是什麼? – GavinBrelstaff
那麼您使用哪種XSLT 2.0處理器?使用Saxon 9.8或任何其他XSLT 3.0處理器和「複合」分組鍵可能會更容易。另外,具有相同'date'元素的'variant'會發生什麼,但是按不同的順序?訂單是否重要? –
@MartinHonnen目前我正在使用Saxon-HE 9.4.0.2J,但我可以輕鬆更新。 – topskip