4

我尝试在 XPATH 中使用大写(),我的解析器是 MSXML 4.0,我得到:

upper-case is not a valid XSLT or XPath function.

真的没有实施吗?

4

2 回答 2

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)"/>

如果您只需要在一个地方使用它,则无需声明变量

<xsl:value-of select="translate(@name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
于 2009-08-04T08:27:22.653 回答
2

也许这可以帮助你:

translate(string, string, string)

translate 函数接受一个字符串,并逐个字符地将匹配第二个字符串的字符转换为第三个字符串中的相应字符。这是在 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

于 2009-08-04T08:25:09.053 回答