XML数据进行加密和大小写转换

ZDNet软件频道 时间:2008-06-29 作者:孟宪会 | 中国IT实验室 我要评论()
本文关键词:大小写 加密 xml 软件
XML数据一个最普通的问题就是数据的大小写,在进行数据转换时常常产生令人头疼的麻烦。
 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>
  解密也很简单,只要把两个变量颠倒即可。
  
  <?xml version="1.0" encoding="gb2312"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:variable
  
  name="alphanumeric">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</xsl:variable>
  
   <xsl:variable
  
  name="encoded">K1aWXJBb2cRdeAMfQgL8yhij976klEFzmYSnIo4DpTZq5rNsUtC0uOPvVwGxH3</xsl:variable>
  
   <xsl:template match="/">
   <foo><xsl:value-of select="translate('This is a test', $alphanumeric, $encoded)" /></foo>
   |||
   <foo><xsl:value-of select="translate('8YS5 S5 6 rF5r', $encoded,$alphanumeric )" /></foo>
  
   </xsl:template>
  </xsl:stylesheet>

大小写

加密

xml

软件


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134