DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 利用XSL對XML數據進行加密和大小寫轉換
利用XSL對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