XSLT / XPath的:没有在MSXML 4.0大写功能?(XSLT/XPath : No up

2019-06-27 19:23发布

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

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

难道真的没有落实?

Answer 1:

有在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')"/>


Answer 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 )



文章来源: XSLT/XPath : No upper-case function in MSXML 4.0?