`
lovebirdegg
  • 浏览: 175020 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

利用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>

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

分享到:
评论

相关推荐

    一种XML数据库的数据模型PDF,深层次讲解XML

    - **关系型数据库与XML数据库的差异**:关系型数据库(如SQL)依赖于表格和列,而XML数据库保留了XML的结构和语义,支持直接对XML文档进行查询和操作。 - **XML数据库分类**:包括基于DOM的、基于SAX的和基于XML...

    xml-应用技术

    在实际应用中,XML还与其他技术结合,如XSL-FO(用于生成打印布局),以及XML签名和加密来确保数据的安全性。总的来说,XML的应用技术涵盖了数据的创建、存储、传输、解析和转换等多个方面,是现代信息技术中不可或...

    XML 官方指南 中文版.rar

    2. **命名规则**:XML元素和属性的命名必须遵循一定的规则,如名称不能以数字开头,不能包含某些特殊字符,且区分大小写。 3. **XML文档对象模型(DOM)**:DOM是一种将XML文档解析成内存中的树形结构的接口,允许...

    XML程序设计考试1.pdf

    - XML元素标记区分大小写。 - 一个合法的XML文档必须有一个根元素。 - XML元素标记不能以数字开头,且开闭标签必须匹配。 #### 2. XML文档结构与模式定义 - **XML文档结构**: - XML文档通常由XML声明、根元素和...

    XML高级编程pdf6-10

    2. **命名规则**:XML标签是自定义的,但需遵循一定的命名规则,如首字符不能是数字,不能包含空格和某些特殊字符,区分大小写等。 3. **文档类型定义(DTD)**:DTD用于定义XML文档的结构和规则,它包含元素声明、...

    xml 高级编程13-15

    2. **命名规则**:XML的元素和属性名必须遵循一定的命名规则,如必须以字母、下划线或冒号开头,不能包含空格和某些特殊字符,大小写敏感等。 3. **DTD(Document Type Definition)与XSD(XML Schema)**:在13-15...

    xml的双语课件非常有用

    3. **XML命名规则**:讲述XML标签、属性和实体名称的规则,包括大小写敏感性、特殊字符的处理等。 4. **XML文本内容和注释**:介绍如何在XML文档中包含文本内容,以及添加注释的方法。 5. **XML解析**:讲解DOM...

    软考.系分辅导下午一考试新技术资料.pdf

    **3.2 数据转换** - **定义**: 将数据从一种格式转换为另一种格式。 - **工具**: ETL(Extract, Transform, Load)工具。 **3.3 工作流** - **定义**: 定义和执行业务流程的顺序和条件。 - **实现**: 使用工作流引擎...

Global site tag (gtag.js) - Google Analytics