Я использую таблицу стилей XSLT для создания документа Excel из файла XML. Одно из значений, которое я использую, я хочу отображать как верхний регистр. Как это возможно?
Таблица стилей XSLT: изменение текста в верхний регистр
Ответ 1
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>
Ответ 2
Вы можете использовать функцию 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.
Ответ 3
XPath 2.0 имеет fn:upper-case()
, который также делает правильные сопоставления в Unicode.
Ответ 4
Используйте сборку следующим образом:
<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.
Ответ 5
Самый простой и чистый способ добиться преобразования case - с помощью CSS.
построить класс, например:
.upper { text-transform: uppercase; }
то используйте класс как класс span:
<span class="upper">
<xsl:value-of select="myTextField" />
</span>
что он:)
Вы также можете использовать другие преобразования:
text-transform: capitalize | uppercase | lowercase | none | inherit