Я использую таблицу стилей XSLT для создания документа Excel из файла XML. Одно из значений, которое я набираю, я хочу отобразить в верхнем регистре. Как это возможно?
Таблица стилей XSLT: перевод текста в верхний регистр
Ответы (5)
XSLT 2.0 имеет функции fn: upper-case () и fn: lower-case (). Однако, если вы используете XSLT 1.0, вы можете использовать translate ():
<xsl:template match="/">
<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:value-of select="translate(doc, $smallcase, $uppercase)" />
</xsl:template>
Вы можете использовать функцию translate()
в XSLT 1.0:
<xsl:value-of select="translate(//some-xpath,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
Если вам посчастливилось иметь доступ к XSLT 2.0, вы можете использовать функцию upper-case()
:
<xsl:value-of select="upper-case(//some-xpath)"/>
Дополнительные сведения см. На странице справки по функциям XPath.
translate()
. Вы должны указать все это сами. upper-case()
- гораздо лучший вариант, но он не поддерживается достаточно широко.
- person Welbog; 30.07.2009
XPath 2.0 имеет fn:upper-case()
, что также делает правильный регистр Unicode сопоставления.
Используйте такую сборку:
<msxsl:script implements-prefix="user" language="C#">
<!--{%assembly%}-->
<![CDATA[
public string ToUpper(string stringValue)
{
string result = String.Empty;
if(!String.IsNullOrEmpty(stringValue))
{
result = stringValue.ToUpper();
}
return result;
}
]]>
</msxsl:script>
Назовите это так: select="user:ToUpper(//root/path)"
Это можно использовать в версиях 1.0 или 2.0.
Самый простой и понятный способ преобразования регистра - это использование CSS.
создать класс, например:
.upper { text-transform: uppercase; }
затем используйте класс как класс span:
<span class="upper">
<xsl:value-of select="myTextField" />
</span>
Это оно :)
Вы также можете использовать другие преобразования:
text-transform: capitalize | uppercase | lowercase | none | inherit