У меня проблема с вложенной группировкой в XSLT 2.0. Я могу почти достичь желаемых результатов, но не совсем, и я запутался в гнезде, поэтому надеюсь получить здесь какую-то помощь.XSLT Вложенная группировка
Проблема состоит в том, что некоторые элементы имеют несколько классификаций продуктов или предметов, и это работает для группировки предметных элементов, но не для продукта. Я уверен, что это просто ошибка, я просто не могу видеть это прямо сейчас ...
Вот пример файла XML, подлежащих обработке:
<metadata>
<file id="1" title="Dimensions">
<subject>Technical Data</subject>
<product>A</product>
</file>
<file id="2" title="Noise and Vibrations">
<subject>Technical Data</subject>
<product>B</product>
</file>
<file id="3" title="Overview">
<subject>Product Description</subject>
<product>A</product>
<product>B</product>
</file>
<file id="4" title="Main Components">
<subject>Product Description</subject>
<subject>Technical Data</subject>
<product>B</product>
</file>
</metadata>
И вот XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="metadata">
<ul>
<xsl:for-each-group select="file" group-by="subject">
<li>
<xsl:value-of select="subject"/>
<ul>
<xsl:for-each-group select="current-group()" group-by="product">
<li>
<xsl:value-of select="product"/>
<ul>
<xsl:for-each select="current-group()">
<li>
<xsl:value-of select="@title"/>
</li>
</xsl:for-each>
</ul>
</li>
</xsl:for-each-group>
</ul>
</li>
</xsl:for-each-group>
</ul>
</xsl:template>
</xsl:stylesheet>
Это текущий результат:
<ul>
<li>Technical Data
<ul>
<li>A
<ul>
<li>Dimensions</li>
</ul>
</li>
<li>B
<ul>
<li>Noise and Vibrations</li>
<li>Main Components</li>
</ul>
</li>
</ul>
</li>
<li>Product Description<ul>
<li>A B
<ul>
<li>Overview</li>
</ul>
</li>
<li>A B
<ul>
<li>Overview</li>
<li>Main Components</li>
</ul>
</li>
</ul>
</li>
</ul>
но то, что я хочу это («Обзор» под обоими элементами продукта а и в, но «Main Компоненты»под только B):
<ul>
<li>Technical Data
<ul>
<li>A
<ul>
<li>Dimensions</li>
</ul>
</li>
<li>B
<ul>
<li>Noise and Vibrations</li>
<li>Main Components</li>
</ul>
</li>
</ul>
</li>
<li>Product Description<ul>
<li>A
<ul>
<li>Overview</li>
</ul>
</li>
<li>B
<ul>
<li>Overview</li>
<li>Main Components</li>
</ul>
</li>
</ul>
</li>
</ul>
Совершенная, я знал, что что-то важное отсутствует, работает как шарм, спасибо! – Anders