为Excel定义导出XML的映射

本文介绍了如何使用XML Schema(XSD)为Excel创建映射,以便将Excel数据导出为XML。XML Schema定义了数据结构,允许指定元素类型和顺序。在示例中,通过定义一个包含Abbreviation和Metabolite元素的复杂类型,并使用maxOccurs属性允许Item元素无限次出现,从而适应500行数据的需求。导出过程通过设置映射关系完成。

Excel如何把其中的数据导出成XML,我本来以为挺简单的,试了下才发现Excel需要一个XML映射文件才能完成。开始之前都有一些基本概念,比如XML啊,DTD啊,不过大家肯定都看过HTML,就那个样,开始吧?

 

XML已经应用灰常灰常广泛了,从数据存储,数据表示都有它的踪迹。现在UI设计也都基于XML做了。XML包含的只是数据,数据需要有格式,这样子大家才都看得明白(没有格式似乎也看得明白,不过软件程序就不会像你那么聪明了)。用来定义XML结构的是DTD应用很广,不过现在XML Schema已经成为W3C的标准了,我也觉得XML Schema爽些,因为它自身就是一种XML的格式,还提供数据类型。更多的DTD和XML Schema的区别可以参考http://www.ibm.com/developerworks/cn/xml/x-sd/index.html

 

言归正传,Excel需要的映射可以通过定义一个XML Schema来实现,就是一个XSD文件。先看看官方定义:

 

XML Schema 是基于 XML 的 DTD 替代者。

XML Schema 描述 XML 文档的结构。

XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。

 

如何定义它呢?我看了下面的例子就顿悟了:

 

一个XML文件内容:

 

其对应的XML Schema XSD内容:

 

再看看对应的DTD,是不是不是很爽啊?

 

当然定义的结构文件DTD或者XSD都需要在XML文件中引入,很简单啦就不说啦。

 

XML Schema文件通过一些元素来定义XML文件中的一个结点,比如<heading>Reminder</heading>对应的是<xs:element name="heading" type="xs:string"/>,其中的type表示该结点数据的数据类型,这里是一个字符串。


XML Schema中还有两个奇怪的结点<xs:complexType>和<xs:sequence>。前一个表示这是一个复杂类型,相当于结点之下还有结点,一个递归的层次。<xs:sequence>是一种复合类型指示器,表示它所包含的结点都是有顺序的,当然也可以没有顺序啦。

 

有了一个基本的认识就开始处理一个实际问题了,有一个表格:包含两列,第一列名为Abbreviation,第二列名为Metabolite。每一列包含500行数据,要求就是将其导出成XML。根据前面的认识,我们可能设计成将数据表示成这样:

 

真样子相应的XML Schema应该是这样:

 

没有问题,但这似乎这能表示Excel表中的一行数据,也就是说我们需要Item能够出现多次,对于这个需求来说至少需要500次。如何做呢?我们就需要一个Occurrence 指示器,来定义某个元素出现的频率。它包含两个指示器:maxOccurs 指示器,minOccurs 指示器,分别设置最小和最大的重复次数。加进来就成这样,我们允许Item出现无限次:

 

 

再次设置映射关系,导出成功。

 

更多的XML Schema相关信息,参考http://www.w3cschool.cn/index-17.html

 

 



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值