2009-08-04 37 views

回答

13

有在XSLT 1.0无功能转换为大写或小写。相反,做到以下几点:

如果在很多地方需要:

声明这两个XSL变量(这是使XSLT更具可读性)

<!-- xsl variables up and lo and translate() are used to change case --> 
    <xsl:variable name="up" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> 
    <xsl:variable name="lo" select="'abcdefghijklmnopqrstuvwxyz'"/> 

,并利用它们在你的翻译功能改变的情况下

<xsl:value-of select="translate(@name,$lo,$up)"/> 

如果您需要在短短的一个使用它的PL王牌,无需声明变量

<xsl:value-of select="translate(@name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> 
+0

看起来相当很像我的答案,即使我没有写代码明确 – noesgard 2009-08-04 08:36:04

2

也许这可以帮助你:

translate(string, string, string) 

的翻译功能将一个字符串,字符一个字符,翻译第二串入第三字符串中的相应字符匹配的字符。这是在XPath中从低转换为大写的唯一方法。这看起来像这样(为了便于阅读,添加了额外的空白空间)。此代码将转化雇员的姓氏大写,然后选择那些雇员在其姓氏开头A.

descendant::employee[ 
starts-with(
    translate(@last-name, 
     "abcdefghijklmnopqrstuvwxyz", 
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 
    "A" 
) 
] 

如果第二串具有比第三串多个字符,这些额外的字符将予以除名第一串。如果第三个字符串的字符多于第二个字符串,则多余的字符将被忽略。

(从http://tutorials.beginners.co.uk/professional-visual-basic-6-xml-part-1-using-xml-queries-and-transformations.htm?p=3