Я пытаюсь использовать групповые функции в XSLT 2.0 в XSLT 1.0. У меня есть код, работающий в XSLT 2.0, но мой процессор не обрабатывает xslt 2.0. Поэтому мне нужна помощь с помощью групповой функции в xslt 1.0.Как использовать групповые функции из XSLT 2.0 в XSLT 1.0?
XML данные:
<table>
<row>
<month>03</month>
<year>2016</year>
<Id>10101</Id>
<Number>1</Number>
<code>A2004</code>
</row>
<row>
<month>03</month>
<year>2016</year>
<type>A</type>
<Id>10101</Id>
<Number>2</Number>
<code>A2004</code>
</row>
<row>
<month>04</month>
<year>2015</year>
<Id>10122</Id>
<Number>1</Number>
<code>A2004</code>
</row>
</table>
Я пытаюсь группировать этот XML на уровне ID и номера внутри него.
<test>
<xsl:for-each-group select="$table" group-by="Id">
<xsl:variable name="var2_resultof_group_items" as="item()+" select="current-group()"/>
</xsl:variable>
<row>
<xsl:attribute name="Id">
<xsl:value-of select="normalize-space(current-grouping-key())"/>
</xsl:attribute>
<xsl:for-each select="$var2_resultof_group_items">
<xsl:attribute name="month">
<xsl:value-of select="month"/>
</xsl:attribute>
</xsl:for-each>
<xsl:for-each select="$var2_resultof_group_items">
<xsl:attribute name="year">
<xsl:value-of select="year"/>
</xsl:attribute>
</xsl:for-each>
<xsl:for-each-group select="$var2_resultof_group_items" group-by="Number">
<xsl:variable name="var1_resultof_group_items" as="item()+" select="current-group()"/>
<line>
<xsl:attribute name="number" select="current-grouping-key()"/>
<xsl:for-each select="$var1_resultof_group_items">
<xsl:attribute name="code">
<xsl:value-of select="code"/>
</xsl:attribute>
</xsl:for-each>
</line>
</xsl:for-each-group>
</row>
</xsl:for-each-group>
</test>
Это выход я получаю с моей XSLT 2.0 кода (желаемый результат), но я не уверен, как выполнить это с помощью XSLT 1,0
<test>
<row Id="10101" month="03" year="2016">
<line Number="1" code="A2004"/>
<line Number="2" code="A2004"/>
</row>
<row Id="10122" month="04" year="2015">
<line Number="1" code="A2004"/>
</row>
</test>
Я могу использовать XLST 1,0 до получить до выхода ниже, но я не уверен, как реализовать группировку ID и затем Числа в нем:
<test>
<row Id="10101" month="03" year="2016">
<line Number="1" code="A2004"/>
</row>
<row Id="10101" month="03" year="2016">
<line Number="2" code="A2004"/>
</row>
<row Id="10122" month="04" year="2015">
<line Number="1" code="A2004"/>
</row>
</test>
Начать здесь: http://www.jenitennison.com/xslt/grouping/muenchian.html Затем посмотрите на многочисленные примеры группировки Muenchian, размещенные здесь на SO. –