我试着在XPATH使用大写(),我的解析器MSXML 4.0,我也得到:
upper-case is not a valid XSLT or XPath function.
难道真的没有落实?
我试着在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)"/>
如果你需要在一个地方使用它,无需声明变量
<xsl:value-of select="translate(@name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
也许这可以帮助你:
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 )