我尝试在XPath使用大写(),我的解析器MSXML 4.0,我也得到:XSLT/XPath:MSXML 4.0中没有大写功能?
upper-case is not a valid XSLT or XPath function.
难道真的没有落实?
我尝试在XPath使用大写(),我的解析器MSXML 4.0,我也得到:XSLT/XPath:MSXML 4.0中没有大写功能?
upper-case is not a valid XSLT or XPath function.
难道真的没有落实?
有在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')"/>
也许这可以帮助你:
translate(string, string, string)
的翻译功能将一个字符串,字符一个字符,翻译第二串入第三字符串中的相应字符匹配的字符。这是在XPath中从低转换为大写的唯一方法。这看起来像这样(为了便于阅读,添加了额外的空白空间)。此代码将转化雇员的姓氏大写,然后选择那些雇员在其姓氏开头A.
descendant::employee[
starts-with(
translate(@last-name,
"abcdefghijklmnopqrstuvwxyz",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
"A"
)
]
如果第二串具有比第三串多个字符,这些额外的字符将予以除名第一串。如果第三个字符串的字符多于第二个字符串,则多余的字符将被忽略。
看起来相当很像我的答案,即使我没有写代码明确 – noesgard 2009-08-04 08:36:04