在XSL中如何进行不区分大小写的字符串比较?

时间:2022-01-06 01:01:08
例:<xsl:for-each select="Msg[@User = 'UserName']">
这样比较是区分大小写的,现在是想不区分大小写,
偶知道在http://www.w3.org/TR/WD-xsl下可用$ieq$来比较,
但是在http://www.w3.org/1999/XSL/Transform就行不通了,
有什么方法吗?

4 个解决方案

#1


<?xml version='1.0' encoding='gb2312'?>
<?xml-stylesheet type="text/xsl" href="csdn0002_translate.xsl"?>
<root>
<user name="ssm"></user>
<user name="Ssm"></user>
<user name="SSM"></user>
<user name="CSDN"></user>
</root>

csdn0002_translate.xsl:
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <xsl:for-each select="/root/user">
  <xsl:variable name="small">abcdefghijklmnopqrstuvwxyz</xsl:variable>
  <xsl:variable name="big">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
   <xsl:if test="translate(@name,$big,$small)  ='ssm'" >
   <xsl:value-of select="@name"/><br/>
   </xsl:if>   </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

#2


楼上强

#3


只能用函数来进行转换吗?不知道对性能有多少影响,想不用函数的说.
如果没有,就只好这样了.

#4


XML本身对大小是敏感的

translate是xpath里自带函数,大小写区别,必须使用

#1


<?xml version='1.0' encoding='gb2312'?>
<?xml-stylesheet type="text/xsl" href="csdn0002_translate.xsl"?>
<root>
<user name="ssm"></user>
<user name="Ssm"></user>
<user name="SSM"></user>
<user name="CSDN"></user>
</root>

csdn0002_translate.xsl:
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <xsl:for-each select="/root/user">
  <xsl:variable name="small">abcdefghijklmnopqrstuvwxyz</xsl:variable>
  <xsl:variable name="big">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
   <xsl:if test="translate(@name,$big,$small)  ='ssm'" >
   <xsl:value-of select="@name"/><br/>
   </xsl:if>   </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

#2


楼上强

#3


只能用函数来进行转换吗?不知道对性能有多少影响,想不用函数的说.
如果没有,就只好这样了.

#4


XML本身对大小是敏感的

translate是xpath里自带函数,大小写区别,必须使用