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数据库的差异**:关系型数据库(如SQL)依赖于表格和列,而XML数据库保留了XML的结构和语义,支持直接对XML文档进行查询和操作。 - **XML数据库分类**:包括基于DOM的、基于SAX的和基于XML...
在实际应用中,XML还与其他技术结合,如XSL-FO(用于生成打印布局),以及XML签名和加密来确保数据的安全性。总的来说,XML的应用技术涵盖了数据的创建、存储、传输、解析和转换等多个方面,是现代信息技术中不可或...
2. **命名规则**:XML元素和属性的命名必须遵循一定的规则,如名称不能以数字开头,不能包含某些特殊字符,且区分大小写。 3. **XML文档对象模型(DOM)**:DOM是一种将XML文档解析成内存中的树形结构的接口,允许...
- XML元素标记区分大小写。 - 一个合法的XML文档必须有一个根元素。 - XML元素标记不能以数字开头,且开闭标签必须匹配。 #### 2. XML文档结构与模式定义 - **XML文档结构**: - XML文档通常由XML声明、根元素和...
2. **命名规则**:XML标签是自定义的,但需遵循一定的命名规则,如首字符不能是数字,不能包含空格和某些特殊字符,区分大小写等。 3. **文档类型定义(DTD)**:DTD用于定义XML文档的结构和规则,它包含元素声明、...
2. **命名规则**:XML的元素和属性名必须遵循一定的命名规则,如必须以字母、下划线或冒号开头,不能包含空格和某些特殊字符,大小写敏感等。 3. **DTD(Document Type Definition)与XSD(XML Schema)**:在13-15...
3. **XML命名规则**:讲述XML标签、属性和实体名称的规则,包括大小写敏感性、特殊字符的处理等。 4. **XML文本内容和注释**:介绍如何在XML文档中包含文本内容,以及添加注释的方法。 5. **XML解析**:讲解DOM...
**3.2 数据转换** - **定义**: 将数据从一种格式转换为另一种格式。 - **工具**: ETL(Extract, Transform, Load)工具。 **3.3 工作流** - **定义**: 定义和执行业务流程的顺序和条件。 - **实现**: 使用工作流引擎...