Выравнивание XSL слева направо с заполнением

Есть ли какой-либо стандартный шаблон в XSLT 1.0, который выполняет выравнивание и дополняет поле до максимальной длины?

Спасибо, Прабхьот.


person Prabhjot    schedule 18.10.2011    source источник


Ответы (1)


К сожалению, XSLT не поставляется с функцией заполнения, хорошая часть заключается в том, что это очень просто сделать, как указано в этом сообщении в блоге: http://www.dpawson.co.uk/xsl/sect2/padding.html.

Например, если вы хотите правильно заполнить строку из 10 пробелов, вы можете сделать:

<xsl:value-of 
 select="substring(concat($string, '          '), 1, 10))"/>

если вам нужна левая панель, вы можете изменить порядок параметров concat следующим образом:

<xsl:value-of 
 select="substring(concat('          ', $string), 1, 10))"/>

Обратите внимание, что строка с пробелами должна содержать столько же символов, сколько требуется вашему дополнению, поэтому, если вы хотите 10-пробелы, вам понадобится строка из 10 пробелов.

person mtrovo    schedule 18.10.2011
comment
Извините, я новичок в XSLT. Мы не хотим буквально помещать пустые строки (из-за проблем с ремонтопригодностью и читабельностью). Можете ли вы предложить шаблон, в котором я могу передать максимальную длину строки и тип выравнивания в шаблон? - person Prabhjot; 18.10.2011
comment
Ссылка, которую вы предоставили, также делает это! Спасибо. - person Prabhjot; 18.10.2011
comment
К левой панели должно быть: <xsl:value-of select="substring(concat(' ', $string), (1+string-length($string)), (10+string-length($string)))"/> - person Tim; 23.07.2013
comment
Для левой панели <xsl:value-of select="substring(concat(' ', $string), string-length($string)+1)" /> кажется проще ;) - person Chris Browet; 24.02.2015