У меня есть табличное содержимое с указанием c поставщика, которого я хочу применить к группе содержимого, к которой он применяется. См. Отрывок из содержимого в XML.
<?xml version="1.0" encoding="UTF-8"?>
<doc xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<story>
<text>
<table>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000W7LM</td>
<td>Diversified Growth A</td>
<td><</td>
<td>0.00</td>
<td>108.26</td>
<td/>
<td>1.51</td>
<td>114.66</td>
<td>88.29</td>
<td>108.74</td>
<td>1st Fusion Asset Management</td>
<td>011 731 5290</td>
<td>1.44</td>
<td>2019-12-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P00016K7H</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000VCZN</td>
<td>Guarded A</td>
<td><</td>
<td>0.00</td>
<td>112.65</td>
<td/>
<td>3.06</td>
<td>113.26</td>
<td>100.86</td>
<td>112.46</td>
<td>1st Fusion Asset Management</td>
<td>011 731 5290</td>
<td>1.52</td>
<td>2019-12-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P00015E8W</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000VCZP</td>
<td>Temperate A</td>
<td><</td>
<td>0.00</td>
<td>110.34</td>
<td/>
<td>2.40</td>
<td>113.98</td>
<td>92.34</td>
<td>110.78</td>
<td>1st Fusion Asset Management</td>
<td>011 731 5290</td>
<td>1.46</td>
<td>2019-12-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P00015E8Y</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000OINH</td>
<td>Asset Select FvF A1</td>
<td><</td>
<td>0.00</td>
<td>161.50</td>
<td/>
<td/>
<td>175.92</td>
<td>130.59</td>
<td>162.74</td>
<td>27Four Investment Managers</td>
<td>011 442 2464</td>
<td>1.64</td>
<td>2020-03-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P0000WFJ5</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000P8T4</td>
<td>Gebalanseerde FvF A1</td>
<td><</td>
<td>0.00</td>
<td>2230.48</td>
<td/>
<td>46.01</td>
<td>2385.31</td>
<td>1812.42</td>
<td>2245.13</td>
<td>27Four Investment Managers</td>
<td>011 442 2464</td>
<td>1.49</td>
<td>2020-03-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P0000XPFJ</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F000002RCP</td>
<td>ShariahAktieweAandeleA1</td>
<td><</td>
<td>0.00</td>
<td>220.39</td>
<td/>
<td>1.44</td>
<td>238.97</td>
<td>174.92</td>
<td>221.89</td>
<td>27Four Investment Managers</td>
<td>011 442 2464</td>
<td>1.80</td>
<td>2020-03-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P0000JYV4</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000OINK</td>
<td>ShariahGebalanseerdeFvFA1</td>
<td><</td>
<td>0.00</td>
<td>144.89</td>
<td/>
<td/>
<td>156.57</td>
<td>128.91</td>
<td>145.77</td>
<td>27Four Investment Managers</td>
<td>011 442 2464</td>
<td>1.56</td>
<td>2020-03-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P0000WFJ8</td>
</tr>
<tr xmlns:w="urn:schemas-microsoft-com:office:spreadsheet">
<td>F00000P8T6</td>
<td>Stabiele FvF A1</td>
<td><</td>
<td>0.00</td>
<td>1853.78</td>
<td/>
<td>74.06</td>
<td>1924.38</td>
<td>1542.18</td>
<td>1862.09</td>
<td>27Four Investment Managers</td>
<td>011 442 2464</td>
<td>1.40</td>
<td>2020-03-31T00:00:00.000</td>
<td>ZAR</td>
<td>0P0000XPFL</td>
</tr>
</table>
</story>
</text>
</doc>
<tr[11]>
содержит информацию, необходимую для заголовка. Я хотел бы сгруппировать информацию по заголовку с номером, указанным в <tr[12]>
, и отображать ее только один раз для каждой группы с использованием XSL 1.0. Смотрите, чего я добился. Текущий метод создает заголовок для всего контента, но я думаю о каком-то подсчете, или если понятие поможет. Любая помощь будет принята с благодарностью.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
</xsl:text>
<doc xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:w="urn:schemas-microsoft-com:office:spreadsheet" xml:lang="af">
<story>
<text>
<table>
<xsl:for-each select="//tr">
<tr colspan="3" class="NewSTOXSubheadEffekte">
<td>
<xsl:value-of select="./td[position()='11']"/>
<xsl:text> </xsl:text>
<xsl:value-of select="./td[position()='12']"/>
</td>
</tr>
<tr>
<td width="61%" class="NewSTOXEffekeLeft">
<xsl:value-of select="./td[position()='2']"/>
</td>
<td width="22%" class="NewSTOXEffekeRight">
<xsl:value-of select="./td[position()='10']"/>
</td>
<td width="17%" class="NewSTOXEffekeRight">
<xsl:value-of select="./td[position()='6']"/>
</td>
</tr>
</xsl:for-each>
</table>
</text>
</story>
</doc>
</xsl:template>
</xsl:stylesheet>
Вот моя попытка использования метода группировки, как указано. Я не получаю никаких результатов и как уже упоминалось. Некоторые указатели были бы действительно классными.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>
<xsl:key name="by-fundmanager" match="story" use="/td[11]"/>
<xsl:template match="/">
<doc xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:w="urn:schemas-microsoft-com:office:spreadsheet" xml:lang="af">
<story>
<text>
<table>
<xsl:for-each select="story[count(. | key('by-fundmanager', td[11])[1]) = 1]">
<xsl:sort select="/td[11]"/>
<tr>
<td colspan="3" class="groupheader">
<xsl:value-of select="string(td[11])/text()"/>
<xsl:text> </xsl:text>
<xsl:value-of select="string(td[12])/text()"/>
</td>
</tr>
<xsl:for-each select="key('by-fundmanager', td[11])">
<xsl:sort select="/td[2]"/>
<xsl:if test="generate-id() = generate-id(key('by-fundmanager', concat(string(td[11]),string(td[2])))[position() = 1])">
<xsl:element name="td">
<td class="stocksleft" width="61%">
<xsl:value-of select="string(td[2])/text()"/>
</td>
<td class="stocksright" width="22%">
<xsl:value-of select="td[5]/text()"/>
</td>
<td class="stocksright" width="17%">
<xsl:value-of select="td[6]/text()"/>
</td>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</table>
</text>
</story>
</doc>
</xsl:template>
</xsl:stylesheet>