科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道利用XSL对XML数据进行加密和大小写转换

利用XSL对XML数据进行加密和大小写转换

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

XML数据一个最普通的问题就是数据的大小写,在进行数据转换时常常产生令人头疼的麻烦。本文介绍了一个解决的办法。

作者:net_lover 来源:net_lover 2008年10月15日

关键字: XSL 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>

  解密也很简单,只要把两个变量颠倒即可。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章