Таблица стилей XSLT: изменение текста в верхний регистр - PullRequest
25 голосов
/ 30 июля 2009

Я использую таблицу стилей XSLT для создания документа Excel из файла XML. Одно из значений, которые я добавляю, я хочу отобразить в верхнем регистре. Как это возможно?

Ответы [ 5 ]

55 голосов
/ 30 июля 2009

XSLT 2.0 имеет функции fn: верхний регистр () и fn: нижний регистр (). Однако, если вы используете 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>
18 голосов
/ 30 июля 2009

Вы можете использовать функцию 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 голосов
/ 30 июля 2009

XPath 2.0 имеет fn:upper-case(), что также делает Unicode правильными сопоставлениями регистров.

2 голосов
/ 13 октября 2017

Используйте сборку, подобную этой:

<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.

0 голосов
/ 01 декабря 2011

Самый простой и понятный способ добиться преобразования регистра - это CSS.

построить класс, например:

.upper { text-transform: uppercase; }

затем используйте класс в качестве класса span:

<span class="upper">
    <xsl:value-of select="myTextField" />
</span>

вот и все:)

Вы также можете использовать другие преобразования:

text-transform:  capitalize | uppercase | lowercase | none | inherit
...