奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> XML >> 利用XSL对XML数据进行加密和大小写转换
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • VB中使用WinSock控件传

  • VB API函数介绍——控

  • VB从零开始编外挂(完整

  • VB.Net实现Web Servic

  • 老树新芽 体验Visual 

  • vb中利用xmlhttp来下载

  • vb中使用正则表达式

  • ASP.NET中Cookie编程的

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

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

        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>8YS5 S5 6 rF5r</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>
    <br/>
    <foo><xsl:value-of select="translate(''8YS5 S5 6 rF5r'', $encoded, $alphanumeric )" /></foo>
    </xsl:template>
    </xsl:stylesheet>

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.