• λ我爱Aspx >> Asp.Net >> 利用XSL对XML数据进行加密和大小写转换
  • 利用XSL对XML数据进行加密和大小写转换

  • :aspxer  Դ:internet  :2007-5-15 20:46:31  ؼ: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>

    Ҷƪл˵?
  • һƪ如何在XSL中得到某节点到根节点的全路径的所有节点?
    һƪ使用.NET存储XML数据