2004-06-05 16:20:08 UTC
Наверно многие знают, что в 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>
Ну, все, хватит читать этот сайт, идем и тренируемся.