xml数据一个最普通的问题就是数据的大小写,在进行数据转换时常常产生令人头疼的麻烦。下面就是一个解决的办法。
假设你有一些数据要发送到另外一个系统,它也识别xml格式的数据,而且要求全部大写,例子数据如下:
例子1:person.xml
<person>
<name>
<first>.net_lover</first>
<last>xianhui meng</last>
<chinesename>孟宪会</chinesename>
</name>
</person>
假设你要转换成如下的格式:
例子2:newperson.xml
<person>
<name>
<first>.net_lover</first>
<last>xianhui meng</last>
<chinesename>孟宪会</chinesename>
</name>
</person>
解决这个转换问题一般是用xpath函数里的translate(),例如:
<foo><xsl:value-of select="translate('this is a test', 'tis', 'tis')" /></foo>
转换后结果如下:
<foo>this is a test</foo>
但是如何把全部的文字转换成大写呢?下面就是进行这样处理的代码:
先定义两个变量:
<xsl:variable name="uppercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
再进行转换:
<foo><xsl:value-of select="translate('this is a test', $lowercase, $uppercase)" /></foo>
结果如下:
<foo>this is a test</foo>
对刚才的问题,可以编写xsl文件如下:
例子3: person.xsl
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0">
<xsl:variable name="uppercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:template match="/">
<person>
<name>
<first><xsl:value-of select="translate(/person/name/first,$lowercase,$uppercase)"/></first>
<last><xsl:value-of select="translate(/person/name/last,$lowercase,$uppercase)"/></last>
</name>
</person>
</xsl:template>
</xsl:stylesheet>
启发
从上面的方法呢会想到什么呢?对数据进行加密!对了,用这种方法可以实现xml数据的加密。
例子:
<xsl:variable name="alphanumeric">abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789
</xsl:variable>
<xsl:variable name="encoded">
k1awxjbb2crdeamfqgl8yhij976klefzmysnio4dptzq5rnsutc0uopvvwgxh3
</xsl:variable>
<foo><xsl:value-of select="translate('this is a test', $alphanumeric, $encoded)" /></foo>
加密后结果如下:
<foo>8snr6nr6k6nzrn</foo>
解密也很简单,只要把两个变量颠倒即可。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器