Я работаю над шаблоном XSL для преобразования документа XHTML/hResume в обычный текст, и у меня возникают проблемы с расположением таблицы (нет, а не таблицы макетов). На данный момент у меня есть следующее, используя отличный Дэйв Pawson-х padding template:XSLT для вывода таблицы с открытым текстом
<variable name="newline" select="' '"/>
<template match="xhtml:table">
<variable name="maxWidth">
<for-each select="xhtml:tr/xhtml:th | xhtml:tr/xhtml:td">
<sort select="string-length(child::text()|child::node())" order="descending" data-type="number"/>
<if test="position() = 1">
<value-of select="string-length(child::text()|child::node())"/>
</if>
</for-each>
</variable>
<for-each select="xhtml:tr">
<for-each select="xhtml:th|xhtml:td">
<variable name="string">
<for-each select="child::text()|child::node()">
<value-of select="."/>
</for-each>
</variable>
<value-of select="$string"/>
<call-template name="append-pad">
<with-param name="length" select="$maxWidth - string-length($string)"/>
</call-template>
<text> </text>
</for-each>
<value-of select="$newline"/>
</for-each>
<value-of select="$newline"/>
</template>
Это создает столбцы одинаковой ширины, но я хотел бы, чтобы улучшить его в пару способов:
- Найдите и используйте максимальную ширину каждого столбца. Для этого необходимо сохранить гибкое количество значений. Я могу изменить maxWidth, чтобы сделать это в простых случаях, но как вы обрабатываете столбцы?
- Центр содержимого охватывающих столбцов.
Есть ли шаблоны, чтобы сделать что-то вроде этого?