Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何使用XSLT将字符串转换为大写或小写?_String_Xpath_Xslt_Case Conversion - Fatal编程技术网

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

String 如何使用XSLT将字符串转换为大写或小写?,string,xpath,xslt,case-conversion,String,Xpath,Xslt,Case Conversion,如何在XSL中进行大小写转换 <xsl:variable name="upper">UPPER CASE</xsl:variable> <xsl:variable name="lower" select="???"/> 大写字母 大写(string)和小写(string)XSLT2.0具有大写()和小写()函数。对于XSLT 1.0,可以使用translate(): 在XSLT1.0中,大写()和小写()函数不可用。 如果您使用的是1.0样式表,则大小写转换

如何在XSL中进行大小写转换

<xsl:variable name="upper">UPPER CASE</xsl:variable>
<xsl:variable name="lower" select="???"/>
大写字母

大写(string)和小写(string)

XSLT2.0具有
大写()
小写()
函数。对于XSLT 1.0,可以使用
translate()


在XSLT1.0中,
大写()和
小写()函数不可用。
如果您使用的是1.0样式表,则大小写转换的常用方法是
translate()


.NET XSLT实现允许在样式表中编写自定义托管函数。对于小写()


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

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

//在启用脚本的情况下创建XsltSettings对象。
XsltSettings XsltSettings=新的XsltSettings(false,true);
XslCompiledTransform xslt=新的XslCompiledTransform();
//加载样式表
Load(xsltPath、xsltSettings、新的XmlUrlResolver());
大写字母
//将大写显示为大写

对于ANSI字符编码:

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

有Unicode版本吗?此解决方案不适用于有趣的字符…对于XSLT 1.0,您必须添加更多的大小写变量或使用扩展函数。如果您决定不使用扩展函数,则可以使用Unicode字符数据库创建完整的列表:以下是完整的ANSI表:translate(5%s,、ABCD基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基œ')这些仅适用于XPath 2.0。此解决方案将适用于任何字符,甚至是奇怪的Unicode字符。这对我来说非常有用,但我将方法体简化为
返回(stringValue??string.Empty).ToLower();
。谢谢@Vladislav,我从来都不知道你能做到这一点!
<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>
<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
 translate(//variable, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸŽŠŒ', 'abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿžšœ')