У меня есть XML, похожий наXSLT - Counting атрибуты внутри элемента
<BOXHEAD>
<COLHEAD H="1">Item</COLHEAD>
<COLHEAD H="2">Cost</COLHEAD>
<COLHEAD H="3">Direct</COLHEAD>
<COLHEAD H="3">In-Direct</COLHEAD>
<COLHEAD H="2">Revenue</COLHEAD>
<COLHEAD H="3">1989</COLHEAD>
<COLHEAD H="3">1990</COLHEAD>
</BOXHEAD>
я пытался что-то похожее на это, чтобы перевести на HTML Colspan:
<xsl:if test="@H=2">
<xsl:variable name="descendants" select="following-sibling::COLHEAD[@H = 3]"/>
<xsl:variable name="number_of_columns_under_this" select="count($descendants)"/>
<xsl:if test="$number_of_columns_under_this > 1">
<xsl:attribute name="colspan">
<xsl:value-of select="$number_of_columns_under_this"/>
</xsl:attribute>
</xsl:if>
</xsl:if>
Желаемый результат: "стоимость" колонка должна выйти до colspan="2"
, но, конечно, count()
поднимает все четыре из @H="3"
в блоке. Я пытаюсь превратить этот древний SGML в таблицу HTML. Нужный из пут похож на это:
<table>
<tbody>
<tr>
<td colspan="1" rowspan="2">Item</td>
<td colspan="2" rowspan="1">Cost</td>
<td colspan="2" rowspan="1">Revenue</td>
</tr>
<tr>
<td>Direct</td>
<td>In-Direct</td>
<td>1989</td>
<td>1990</td>
</tr>
</tbody>
</table>
Расчет RowSpan и Объединение столбцов, оказывается трудным для меня.
Можете ли вы разместить желаемый выходной XML для ввода этого образца? –
Требование .. похоже, я понимаю, но я не уверен в себе. То, что я понимаю, так .., поскольку вы используете следующий брат, он вернет '4', когда вы встретите' Стоимость ' и он возвращает '2', когда вы сталкиваетесь с' Доход ' –
То, что вы ожидаете от него, возвращается ** - это количество последовательных элементов ** COLHEAD (имеющих атрибут H =" 3 "), следующий за текущим узлом .. это правильно? –