Я выполняю преобразование xsl, и в нем я вызываю шаблон с параметром, используя следующий код
<xsl:call-template name="GenerateColumns">
<xsl:with-param name="curRow" select="$curRow"/>
<xsl:with-param name="curCol" select="$curCol + 1"/>
</xsl:call-template>
Вызывает функцию шаблона, которая выводит часть элемента таблицы в HTML. CurRow и curCol используются для определения того, какая строка и столбец находятся в таблице. Для gbl_maxCols установлено количество столбцов в HTML-таблице
<xsl:template name="GenerateColumns">
<xsl:when test="$curCol <= $gbl_maxCols">
<td>
<xsl:attribute="colspan">
<xsl:value-of select="/page/column/@skipColumns"/>
</xsl:attribute>
</xsl:when>
</xsl:template>
Результатом этой функции является набор элементов td, однако некоторые из этих элементов (элементы с атрибутом skipColumn больше 1 охватывают более 1 столбца, мне нужно пропустить это количество столбцов при следующем вызове generateColumns.
это работает так же, как и следовало ожидать в случае, когда я просто увеличиваю параметр curCol, но у меня есть случай, когда мне нужно использовать значение из атрибута xml skipColumns в математике для вычисления значения для curCol. В приведенном выше случае я перебираю все столбцы, и это работает для большинства моих вариантов использования. Однако в тех же случаях мне нужно пропустить некоторые столбцы и передать это значение из атрибута xml, чтобы вычислить, сколько столбцов мне нужно пропустить.
Моя наивная первая попытка была примерно такой
<xsl:call-template name="GenerateColumns">
<xsl:with-param name="curRow" select="$curRow"/>
<xsl:with-param name="curCol" select="$curCol + /page/column/@skipColumns"/>
</xsl:call-template>
Но, к сожалению, это не похоже на работу. Есть ли способ использовать атрибут со страницы XML в расчете для значения параметра в xsl.
Моя XML-страница выглядит примерно так (отредактировано, поскольку XML-файл довольно большой)
<page>
<column name="blank" skipColumns="1"/>
<column name="blank" skipColumns="1"/>
<column name="test" skipColumns="3"/>
<column name="blank" skipColumns="1"/>
<column name="test2" skipColumns="6"/>
</page>
после всего этого я хотел бы иметь набор элементов td, подобных следующему
<td></td><td></td><td colSpan="3"></td><td></td><td colSpan="6"></td>
если я просто перебираю столбцы, я получаю что-то вроде этого, которое дает мне больше элементов td, чем у меня должно быть
<td></td><td></td><td colSpan="3"></td><td></td><td colSpan="6"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
Отредактировано для предоставления дополнительной информации