Итак, вы должны сделать это в 2 шага:
- Идентификация строки с максимальным количеством столбцов
- Итерация всех строк, заполняющих пропущенные столбцы
Итак, первая часть заключается в том, в чем здесь основная проблема, потому что это невозможно выяснить только с помощью xpath.
Ответы на эти вопросы подтвердили, что:
Найти максимальное количество детей с XPath 1,0
Я пытаюсь ответить на этот вопрос сейчас около 30 минут. И я действительно знаком с XML и XSLT по моей работе. Но я не мог просто понять, как найти элемент с максимальным количеством дочерних элементов. Но кто-то еще делал раньше:
Найти максимальное значение всех дочерних элементов и получить его родительский элемент в XSLT
Кстати: этот парень испытывает недовольство своим ответом!
Если у вас есть, мы переходим к шагу 2:
В вашем шаблоне категории просто добавьте вызов к следующему шаблону (это просто цикл for):
<xsl:template name="for.loop">
<xsl:param name="i" />
<xsl:param name="count" />
<xsl:if test="$i <= $count">
//Generate your "fill up" - colum here
</xsl:if>
<!--begin_: RepeatTheLoopUntilFinished-->
<xsl:if test="$i <= $count">
<xsl:call-template name="for.loop">
<xsl:with-param name="i">
<xsl:value-of select="$i + 1"/>
</xsl:with-param>
<xsl:with-param name="count">
<xsl:value-of select="$count"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
Теперь вы называете этот шаблон просто введите count(Process)
в качестве параметра i и введите количество к ранее сохраненному «максимуму» - узлу, который вы получили из первого шаблона из связанного вопроса count(maximumnode/Process)
в качестве параметра сосчитать.
Вздох кажется, что вы достигли некоторых точек, где XSLT довольно сложно.
Надеюсь, это поможет!