DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML數據進行加密和大小寫轉換
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學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved