Наверно многие знают, что в XSLT есть такая строковая функция translate (описание см. в справочнике) и опять же многие знают, что там нет таких широко распространенных во многих языках строковых функций, таких как upper (перевод строки в верхний регистр) и lower (перевод строки в нижний регистр). Это может расстроить кого угодно, можно даже сказать, что у человека наступит депрессия, но только не у Константина Томашевича, который, собственно говоря, и предложил мне решение этой проблемы, используя вышеупомянутую строковую функцию translate().

Оказывается тут все просто, как 2 копейки. Создаем пару именованных шаблонов названных соответственно upper и lower (угадайте, какой для чего нужен):

	<xsl:variable name="lowCase">абвгдеёжзийклмнопрстуфхцчшщыъьэюяabcdefghijklmnopqrstuvwxyz</xsl:variable>
	<xsl:variable name="upCase">АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЪЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>

	<xsl:template name="upper">
		<xsl:value-of select="translate($str, $lowCase, $upCase)"/>
	</xsl:template>

	<xsl:template name="lower">
		<xsl:value-of select="translate($str, $upCase, $lowCase)"/>
	</xsl:template>

Делаем их доступными из любого места нашего XSLT, например, поместив их в файл который подключается прямо или косвенно в любом XSLT шаблоне нашего сайта. Ну и далее просто используем:

<xsl:call-template name="lower">
	<xsl:with-param name="str">СТРОКА ПЕРЕВОДИМАЯ В НИЖНИЙ РЕГИСТР</xsl:with-param>
</xsl:call-template>

Аналогично для upper:

<xsl:call-template name="upper">
	<xsl:with-param name="str">строка переводимая в верхний регистр</xsl:with-param>
</xsl:call-template>

Ну, все, хватит читать этот сайт, идем и тренируемся.

2004-06-05 16:20:08 UTC programming snippet web xslt