代码之家  ›  专栏  ›  技术社区  ›  mjs

如何用XSLT将字符串转换为大写或小写?

  •  115
  • mjs  · 技术社区  · 15 年前

    如何在XSL中进行案例转换?

    <xsl:variable name="upper">UPPER CASE</xsl:variable>
    <xsl:variable name="lower" select="???"/>
    
    6 回复  |  直到 6 年前
        1
  •  184
  •   wasmachien Jon W    6 年前

    在XSLT 1中 upper-case() lower-case() 功能不可用。 如果您使用的是1.0样式表,那么常见的大小写转换方法是 translate() :

    <xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
    <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
    
    
    <xsl:template match="/">
      <xsl:value-of select="translate(doc, $lowercase, $uppercase)" />
    </xsl:template>
    
        2
  •  39
  •   j0k gauthamp    10 年前

    XSLT 2有 upper-case() lower-case() 功能。对于XSLT1.0,可以使用 translate() :

    <xsl:value-of select="translate("xslt", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")" />
    
        3
  •  9
  •   Vladislav    11 年前

    .NET XSLT实现允许在样式表中写入自定义托管函数。对于小写(),它可以是:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:utils="urn:myExtension" exclude-result-prefixes="msxsl">
    
      <xsl:output method="xml" indent="yes"/>
    
      <msxsl:script implements-prefix="utils" language="C#">
        <![CDATA[
          public string ToLower(string stringValue)
          {
            string result = String.Empty;
    
            if(!String.IsNullOrEmpty(stringValue))
            {
              result = stringValue.ToLower(); 
            }
    
            return result;
          }
        ]]>
      </msxsl:script>
    
      <!-- using of our custom function -->
      <lowercaseValue>
        <xsl:value-of select="utils:ToLower($myParam)"/>
      </lowercaseValue>
    

    假设这可能很慢,但仍然可以接受。

    不要忘记为转换启用嵌入式脚本支持:

    // Create the XsltSettings object with script enabled.
    XsltSettings xsltSettings = new XsltSettings(false, true);
    
    XslCompiledTransform xslt = new XslCompiledTransform();
    
    // Load stylesheet
    xslt.Load(xsltPath, xsltSettings, new XmlUrlResolver());
    
        4
  •  2
  •   Natalie Pan    10 年前
    <xsl:variable name="upper">UPPER CASE</xsl:variable>
    <xsl:variable name="lower" select="translate($upper,'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/>
    <xsl:value-of select ="$lower"/>
    
    //displays UPPER CASE as upper case
    
        5
  •  0
  •   Eric Petroelje    13 年前

    大写(字符串)和小写(字符串)

        6
  •  0
  •   Oleksii Kyslytsyn    8 年前

    对于ANSI字符编码:

     translate(//variable, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸŽŠŒ', 'abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿžšœ')