CN101478730B - 数据交换方法、系统及设备 - Google Patents
数据交换方法、系统及设备 Download PDFInfo
- Publication number
- CN101478730B CN101478730B CN2008101694705A CN200810169470A CN101478730B CN 101478730 B CN101478730 B CN 101478730B CN 2008101694705 A CN2008101694705 A CN 2008101694705A CN 200810169470 A CN200810169470 A CN 200810169470A CN 101478730 B CN101478730 B CN 101478730B
- Authority
- CN
- China
- Prior art keywords
- data
- name
- type
- xml
- exchange
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开数据交换的方法、系统和设备,涉及设备间的数据交换。本发明要解决的技术问题是使数据交换能够及时准确。本发明提供一种数据交换的方法,包括以下步骤:将需要交换的数据进行XML封装,生成XML文件;所述XML文件携带的数据信息包括头信息和数据条目的数量信息;将所述XML文件携带的数据信息交换给另一终端设备,同时本发明还提供了其他数据交换的方法,以及数据交换的系统及设备,达到了使数据交换能够及时准确的效果。
Description
技术领域
本发明涉及数据交换,尤其涉及一种终端间的数据交换。
背景技术
Vcard:vCard是在Internet上广泛使用的联系人的一种格式。vCard的使用,使通过网络的个人和业务信息(例如电话号码和地址)交换自动化,vCard信息超越了简单文本,包括图片、公司图徽、Web地址等等。vCard称为电子商务卡片,主要用于记录通讯薄的联系人信息等,并且方便在不同的设备之间进行数据交换。
由于在终端之间可以传输的个人数据类型种类繁多,但整个传输的原理和特点都相似,在此主要利用vCard的传输过程和原理对现有技术进行说明。
现有技术一是一种利用vCard协议传输联系人信息的方法如图1所示包含如下步骤:
A、发送端手机将各个联系人信息分别编码为Vcard文件;其具体操作为将每个联系人信息都对应的编码为一个Vcard文件;
B、发送端手机将编码好的所有Vcard文件发送给接收端手机;
C、接收端手机收到所有Vcard文件后进行存储,并供用户手动操作分别导入各个Vcard文件。
上述技术方案能准确的将联系人信息发送给接收端手机,但其存在以下缺陷,由于每个联系人信息都对应的编码为一个Vcard文件,所以在接收端手机对Vcard文件解码时也需要对所有的Vcard文件分别解码,解码效率较低;且导入Vcard文件是用户手动操作导入的,所以导入时间过长。
现有技术二是另一种利用Vcard协议传输联系人信息的方法,如图2所示包含以下步骤:
A、发送端手机将所有联系人信息全部压缩编码为一个Vcard文件;
B、发送端手机将编码好的Vcard文件发送给接收端手机;
C、接收端手机收到所有Vcard文件后进行存储,并自动导入Vcard文件;
D、接收端手机自动导入Vcard文件后,删除接收到的Vcard文件。
上述方法虽说解决了解码效率低,导入时间过长这些技术问题,但是由于上述方法无法高效的获得联系人信息的总数量,又由于接收端手机自动导入Vcard文件后,删除接收到的Vcard文件,所以在接收端手机能存储的联系人信息数量M小于接收到的联系人信息数量N时,接收端手机仅能导入M个联系人信息,从而造成了未导入的联系人信息的丢失,既未导入的个人信息管理数据的丢失。
发明内容
本发明实施例要解决的技术问题是提供数据交换的方法、设备、系统,使数据交换能够及时准确。
本发明实施例提供一种数据交换方法,包括以下步骤:
接收XML封装的数据信息;
读取所述XML封装的数据信息中的头信息;
根据所述头信息进行数据交换。
本发明实施例还提供一种数据交换方法,包括以下步骤:
接收XML封装的数据信息;
读取所述XML封装的数据信息中的头信息;
根据所述头信息进行数据交换。
本发明实施例提供一种数据交换系统,包括:
第一数据交换设备,用于将数据传送给第一转换单元;
第二数据交换设备,用于接收第二转换单元传送的的数据;
第一转换单元,用于将第一数据交换设备传送的数据利用XML进行封装,所述读取XML封装的头信息;
第二转换单元,用于将XML转换成第二数据交换设备可接收的数据并传送给第二数据交换设备。
本发明实施例提供一种数据交换设备,包括:
数据生成单元,用于生成要交换的数据并传送给数据转换单元;
数据转换单元,用于将要交换的数据转换成XML文件并传送,所述读取XML文 件携带头信息和数据条目的数量信息。
本发明实施例还提供一种数据交换设备,包括
数据转换单元,用于接收XML数据,读取XML封装的头信息和数据条目的数量信息,将XML数据转换成第二数据交换设备可接收的数据并传送给数据接收单元;
数据接收单元,用于接收数据转换单元传送的数据。
本发明实施例通过将数据信息进行XML封装,生成XML文件,并使XML文件携带头信息和数据条目的数量信息,从而使数据交换达到及时准确的效果。
附图说明
图1是现有技术一的方法流程图;
图2是现有技术二的方法流程图;
图3是本发明实施例1的一种数据交换方法的流程图;
图4是本发明实施例1的另一种数据交换方法的流程图;
图5是本发明实施例1的一种数据交换系统的示意图;
图6是本发明实施例1的一种数据交换设备的示意图。
图7是本发明实施例1的另一种数据交换设备的示意图
具体实施方式
实施例1
本发明实施例提供一种数据交换方法,如图3所示,所示包括以下步骤:
将需要交换的数据使用XML(Extensible Markup Language)进行封装;
所述XML封装的数据信息包括头信息;
将所述XML封装的数据信息传送给进行数据交换的另一单元。
将所述需要交换的数据可以封装在*.udx文件当中。UDX(“通用数据交换文件,universal data exchange file,*.udx”)是一个文件名的称呼,在这里,我们称之为数据交换文件。
所述头信息包括数据条目的数量信息。
所述头信息还至少包括以下一种:用户信息,客户端信息,设备信息,日期信息,语言信息。
所述XML封装的数据信息包括具体数据信息,该具体数据信息至少包括以下一种:地址簿,日程表,短消息,多媒体消息以及电子邮件消息的条目信息。
在所述XML文件携带的数据信息之上可以叠加序列号和条目信息,以使在整个数据交换过程当中可以有选择的对部分条目进行交换。
可以用一个或多个XML对电话簿、日程表、短消息、多媒体消息以及电子邮件消息的数据进行封装。当用一个XML对上述消息进行封装的时候,需要一个整体的头信息对所有所需要交换的信息进行描述。当多份XML文件进行封装的时候,一个XML封装一类型的数据,如一个XML封装电话簿,一个封装日程表的这种方式。在每个封装的XML当中,需要一个头信息对所述的携带的信息进行描述。这个头信息可以采用相同的格式,所不同的是具体携带的信息的类型不同。
本发明实施例还提供一种数据交换方法,如图4所示,包括以下步骤:
接收XML封装的数据信息;
读取所述XML封装的数据信息中的头信息;
根据所述头信息进行数据交换。
在所述读取所述XML封装的数据信息中的头信息后还包括根据所述头信息判断是否具备交换能力;如果是则进行数据交换,如果否则拒绝进行数据交换。
所述XML封装的数据信息封装在数据交换文件中。
所述头信息还包括数据条目的数据信息.
所述头信息至少包括以下一种:用户信息,客户端信息,设备信息,日期信息,语言信息。
所述XML封装的数据信息包括具体数据信息,该具体数据信息至少包括以下一种:地址簿,日程表,短消息,多媒体消息以及电子邮件消息的条目信息。
在所述XML封装的数据信息上叠加序列号和条目信息。
所述根据所述头信息判断是否具备交换能力具体是根据数据类型判断是否支持该数据类型的数据交换或根据该数据类型的条目信息判断是否有容量交换相应数据类型数据或根据该数据类型的数据的条目数量信息判断是否在交换过程中是否有数据丢失、数据重复的情况中的一种发生。判断交换的数据条目的数量与读取的XML文件头信息条目的数量是否一致,不一致时,则抛弃本次的交换过程,并提示用户有错误发生。检测到有仅仅因为本地传输当中发生的错误,而不是由于本地容量不足,或者没有能力进行数据交换的话,可以提示用户重新发起交换的过程,从而进行错误重传。
本发明实施例提供一种数据交换系统,如图5所示,包括:
第一数据交换设备,用于将数据传送给第一转换单元;
第二数据交换设备,用于接收第二转换单元传送的的数据;
第一转换单元,用于将第一数据交换设备传送的数据利用XML进行封装,所述读取XML封装的头信息;
第二转换单元,用于将XML转换成第二数据交换设备可接收的数据并传送给第二数据交换设备。
所述系统还可以包括:
检测单元,用于检测因为本地传输当中发生的错误;
第一提示单元,用于在所述检测单元检测到有因为本地传输当中发生的错误时提示用户重新发起交换的过程,从而进行错误重传。
所述系统还可以包括第一判断单元,用于根据所述头信息判断是否具备交换能力,所述第二转换单元在所述判断单元判断为具备交换能力时将XML文件转换成第二数据交换设备可接收的数据并传送给第二数据交换设备。
所述系统还可以包括:
第二判断单元,用于判断交换的数据条目的数量与读取的XML文件头信息条目的数量是否一致;
第二提示单元,用于所述第二判断单元判断单元判断交换的数据条目的数量与读取的XML文件头信息条目的数量不一致时抛弃本次的交换过程,并提示用户有错误发生。
本发明实施例提供一种数据交换设备,如图6所示,包括:
数据生成单元,用于生成要交换的数据并传送给数据转换单元;
数据转换单元,用于将要交换的数据转换成XML文件并传送,所述读取XML封装的头信息和数据条目的数量信息。
本发明实施例还提供一种数据交换设备,如图7所示,包括:
数据转换单元,用于接收XML数据,读取XML封装的头信息和数据条目的数量信息,将XML数据转换成第二数据交换设备可接收的数据并传送给数据接收单元;
数据接收单元,用于接收数据转换单元传送的数据。
所述设备还可以包括:
检测单元,用于检测因为本地传输当中发生的错误;
第一提示单元,用于在所述检测单元检测到有因为本地传输当中发生的错误时提示用户重新发起交换的过程,从而进行错误重传。
所述设备还可以包括第一判断单元,用于根据所述头信息判断是否具备交换能力,所述数据转换单元在所述第一判断单元判断为具备交换能力时将XML文件转换成数据接收单元可接收的数据并传送给数据接收单元。
所述设备还可以包括:
第二判断单元,用于判断交换的数据条目的数量与读取的XML文件头信息条目的数量是否一致;
第二提示单元,用于所述第二判断单元判断单元判断交换的数据条目的数量与读取的XML文件头信息条目的数量不一致时抛弃本次的交换过程,并提示用户有错误发生。
实施例2
本实施例主要是对整个数据交换过程当中所交换数据的描述信息如何生成进行说明,其目的在于通过这些描述信息,终端可以在数据交换之前检查是否能够实现交换的功能,同时在交换完成后,对是否发生错误进行检查,并可以根据整个描述信息请求对交换数据进行重传。
整个终端间的数据交换过程如2.2所述,并且在整个交换过程当中,数据交换文件采用XML的形式,所涉及的终端数据包括终端内的电话簿、日程表、短消息、多媒体消息和电子邮件等各种用户资料。
由于XML文件主要携带所需要交换的数据信息。为了实现本实施例的目的,我们在整个文件结构当中,将文件当中的数据分为两个部分,一部分是XML文件的头信息,一部分是所需要交换的数据信息。在XML文件的头信息当中,主要包括对数据的生成用户,数据生成的设备,数据生成的时间,数据生成的软件信息,数据当中的语言类型;此外,还携带各种不同类型数据的数量信息。这部分的信息在每次生成的XML文件当中必须存在。
另外一部分内容是所需要交换的数据信息,这些信息和具体的数据相关联的。主要包括电话簿、日程表、短消息、多媒体消息和电子邮件消息等数据。这些数据根据实际的情况作为XML文件的不同部分,同时在交换过程当中,作为XML文件一部分的这些数据,如果需要进行交换,那么会作为XML的一部分,如果不参与交换,将不出现在XML文件当中。整个数据交换过程当中得数据信息的具体逻辑结构参见下图:
上述头信息,也就是整个数据交换过程当中所交换数据的描述信息。为了清晰的描述他在整个文件当中所处的位置,我们用头信息来称呼它。当然,根据具体实现的需要,这个信息可以放置在整个文件的各个位置,而不是局限在文件的头部,因此,头信息的称呼也不是专有的。
终端进行数据交换过程当中所生成的XML文件的头信息,采用XML的方式进行描述,其目的在于对整个交换过程当中的XML文件进行总体描述,同时也对XML文件当中所涉及的交换数据的数据信息进行总体的描述。终端可以通过读取该部分信息对整个需要交换的数据信息有一个整体的了解。
这部分的信息主要包括如下的内容:用户信息,客户端信息,设备信息,日期信息,语言信息等;此外,还涉及具体的信息相关的信息,主要包括地址簿,日程表,短消息,多媒体消息以及电子邮件消息的条目信息。
其在交换的过程当中利用XML进行封装,需要遵守如下的DTD:
<?xml version=″1.0″encoding=″UTF-8″?>
<!ELEMENT DataExchangeInfo(RecordInfo,vCard,vCalendar,SMS,MMS,
Email)>
<!ATTLIST DataExchangeInfo
UserInfo CDATA#REQUIRED
UserAgent CDATA#REQUIRED
DeviceInfo CDATA#REQUIRED
Date CDATA#REQUIRED
Language CDATA#REQUIRED
>
<!ELEMENT RecordInfo EMPTY>
<!ATTLIST RecordInfo
RecordOfvCard CDATA#REQUIRED
RecordOfvCalendar CDATA#REQUIRED
RecordOfSMS CDATA#REQUIRED
RecordOfMMS CDATA#REQUIRED
RecordOfEmail CDATA#REQUIRED
>
在上述的DTD当中
ELEMENT DataExchangeInfo标识整个数据交换文件的头信息;
UserInfo标识生成数据交换文件的用户信息;
UserAgent标识生成数据交换文件的客户端信息;
DeviceInfo标识生成数据交换文件的设备信息;
Date标识生成数据交换文件的日期信息;
Language标识生成数据交换文件的语言信息;
RecordInfo标识数据文件当中所包含的数据内容的头信息;
RecordOfvCard标识所交换的vCard数据的条数;
RecordOfvCalendar标识所交换的vCalendar数据的条数;
RecordOfSMS标识所交换的SMS数据的条数;
RecordOfMMS标识所交换的MMS数据的条数;
RecordOfEmail标识所交换的Email数据的条数。
终端可以根据上述的DTD的描述生成数据交换文件,以及对该文件进行解析。出于兼容性的考虑,终端可以支持Schema的方式进行XML文件的生成。其形式如下所示:
<?xml version=″1.0″encoding=″UTF-8″?>
<!DOCTYPE xs:schema SYSTEM″http://www.sample.com/udx.xsd″>
<xs:schema xmlns:xs=″http://www.w3.org/2001/XMLSchema″
elementFormDefault=″qualified″attributeFormDefault=″unqualified″>
<!--
===============================================
Header Information
===============================================
-->
<xs:element name=″DataExchangeInfo″type=″DataExchangeInfoType″/>
<xs:complexType name=″DataExchangeInfoType″>
<xs:sequence>
<xs:element name=″RecordInfo″type=″RecordInfoType″/>
<xs:element name=″vCard″type=″vCardType″/>
<xs:element name=″vCalendar″type=″vCalendarType″/>
<xs:element name=″SMS″type=″SMSType″/>
<xs:element name=″MMS″type=″MMSType″/>
<xs:element name=″Email″type=″EmailType″/>
</xs:sequence>
<xs:attribute name=″UserInfo″type=″xs:string″use=″required″/>
<xs:attribute name=″UserAgent″type=″xs:string″use=″required″/>
<xs:attribute name=″DeviceInfo″type=″xs:string″use=″required″/>
<xs:attribute name=″Date″type=″xs:string″use=″required″/>
<xs:attribute name=″Language″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″RecordInfoType″>
<xs:attribute name=″RecordOfvCard″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfvCalendar″type=″xs:string″
use=″required″/>
<xs:attribute name=″RecordOfSMS″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfMMS″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfEmail″type=″xs:string″use=″required″/>
</xs:complexType>
根据2.2当中所介绍的整个数据交换方式的流程,终端需要生成用于数据交换的中间文件。在生成这个中间文件的过程当中,需要首先将用户、设备、软件、日期、语言等相关的信息填写到整个描述信息当中。此后,在将需要交换的数据封装在XML形式的同时,还需要将这些数据的条目信息填写到整个描述信息当中。
在交换的过程当中,目的终端首先读取交换过程当中的中间文件。为了更好的确保交换的成功,他读取整个文件的描述信息,也就是本例当中的数据文件的头信息,从而获取整个文件的生成者,设备、软件、日期以及语言等信息。之后 再读取相关的数据条目的描述信息,比如说数据条目的数量,种类。如果说终端不支持交换数据条目的数量,或不支持数据条目的种类,那么可以拒绝进行本次数据交换,并且将拒绝本次交换的原因提示用户。这样就可以避免在没有交换能力的情况下盲目的进行数据交换,造成错误的发生。
终端的错误检测。当整个交换发生之后,比如在交换vCard的过程当中。交换后的新生成的vCard条目有101条,而实际上读取的文件头信息当中的条目仅仅存在100条,那么整个交换过程当中是有错误发生的,那么终端就应该抛弃本次的交换过程,并提示用户有错误发生。
终端的错误重传。如果终端检测到有错误发生,而且仅仅是因为本地传输当中发生的错误,比如上述交换vCard的过程当中的,交换后的新生成的vCard条目有101条,而实际上读取的文件头信息当中的条目仅仅存在100条的例子;而不是由于本地容量不足,或者没有能力进行数据交换的话。终端可以提示用户重新发起交换的过程,从而进行错误重传。
通过头信息的内容,可以让终端解决能力匹配,错误检测,错误重传的问题。
实施例3
本实施例主要是对整个数据交换过程当中所交换数据的对vCard数据进行XML封装的说明,通过在vCard的数据之上叠加整个vCard数据的序列号和条目信息,让用户在整个数据交换过程当中可以有选择的对部分条目进行交换。
终端所支持的电话簿数据格式可以参考vCard 2.1的要求,其数据格式满足如下的要求和定义。
表1电话簿条目和vCard字段的对应关系
终端在对电话簿进行数据交换的过程当中,支持将终端的电话簿数据按照XML的形式进行封装,所生成的XML文件用于对所需交换的电话簿数据进行交换。在电话簿数据进行XML的封装过程中,需要遵守如下的DTD:
<!ELEMENT vCard(vCardInfo*)>
<!ELEMENT vCardInfo(vCardField*)>
<!ATTLIST vCardInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT vCardField EMPTY>
<!ATTLIST vCardField
ADR CDATA#REQUIRED
ADRHOME CDATA#REQUIRED
ADRWORK CDATA#REQUIRED
BDAY CDATA#REQUIRED
ELVOICEHOME CDATA#REQUIRED
EMAIL CDATA#REQUIRED
EMAILHOME CDATA#REQUIRED
EMAILWORK CDATA#REQUIRED
N CDATA#REQUIRED
ORG CDATA#REQUIRED
Sequence CDATA#REQUIRED
TEL CDATA#REQUIRED
TELCELL CDATA#REQUIRED
TELCELLHOME CDATA#REQUIRED
TELCELLWORK CDATA#REQUIRED
TELFAX CDATA#REQUIRED
TELFAXHOME CDATA#REQUIRED
TELFAXWORK CDATA#REQUIRED
TELHOME CDATA#REQUIRED
TELVIDEO CDATA#REQUIRED
TELVIDEOCELL CDATA#REQUIRED
TELVIDEOHOME CDATA#REQUIRED
TELVIDEOWORK CDATA#REQUIRED
TELVOICE CDATA#REQUIRED
TELVOICEHOME CDATA#REQUIRED
TELVOICEWORK CDATA#REQUIRED
TELWORK CDATA#REQUIRED
TITLE CDATA#REQUIRED
URL CDATA#REQUIRED
URLHOME CDATA#REQUIRED
URLWORK CDATA#REQUIRED
>
在上述的DTD当中,主要是对vCard数据如何在数据交换文件格式当中体现进行规定。所有的vCard数据都是XML中vCard元素的子元素,每个vCard元素当中可以包含0个或者多个的vCardInfo元素。每个vCardInfo元素当中包含一个vCard数据的序号以及一个以XML形式进行封装的vCard数据。
具体的vCard的数据字段的含义参考本规范的第一部分,本部分仅按照W3C的规则对第一部分数据格式所要求的vCard字段进行了XML形式的封装定义。
终端可以根据上述的DTD的描述生成数据交换文件,以及对该文件进行解析。出于兼容性的考虑,终端可以支持Schema的方式进行XML文件的生成。其形式如下所示:
<!--
==================================================
vCard Data
==================================================
-->
<xs:element name=″vCard″type=″vCardType″/>
<xs:complexType name=″vCardType″>
<xs:sequence>
<xs:element name=″vCardInfo″type=″vCardInfoType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″vCardInfoType″>
<xs:sequence>
<xs:element name=″vCardField″type=″vCardFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″vCardFieldType″>
<xs:attribute name=″ADR″type=″xs:string″use=″required″/>
<xs:attribute name=″ADRHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″ADRWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″BDAY″type=″xs:string″use=″required″/>
<xs:attribute name=″ELVOICEHOME″type=″xs:string″
use=″required″/>
<xs:attribute name=″EMAIL″type=″xs:string″use=″required″/>
<xs:attribute name=″EMAILHOM E″type=″xs:string″use=″required″/>
<xs:attribute name=″EMAILWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″N″type=″xs:string″use=″required″/>
<xs:attribute name=″ORG″type=″xs:string″use=″required″/>
<xs:attribute name=″Sequence″type=″xs:string″use=″required″/>
<xs:attribute name=″TEL″type=″xs:string″use=″required″/>
<xs:attribute name=″TELCELL″type=″xs:string″use=″required″/>
<xs:attribute name=″TELCELLHOME″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELCELLWORK″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELFAX″type=″xs:string″use=″required″/>
<xs:attribute name=″TELFAXHOME″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELFAXWORK″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVIDEO″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVIDEOCELL″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELVIDEOHOME″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELVIDEOWORK″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELVOICE″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVOICEHOME″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELVOICEWORK″type=″xs:string″
use=″required″/>
<xs:attribute name=″TELWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″TITLE″type=″xs:string″use=″required″/>
<xs:attribute name=″URL″type=″xs:string″use=″required″/>
<xs:attribute name=″URLHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″URLWORK″type=″xs:string″use=″required″/>
</xs:complexType>
上述是终端在生成和转换相关数据内容是所需要遵守的DTD/Schema的格式。终端可以参考上述格式生成/解析XML文档。
在上述的DTD当中,存在如下的Sequence的字段。
Sequence CDATA#REQUIRED
这个字段必须出现在每一个vCard的条目当中。通过这个序号,终端在解析数据交换的中间文件的时候,可以选择性的对第x条数据进行交换,而不用一次对所有的数据进行交换,从而节约交换的时间,同时可以针对数据能力有限,存储空间有限的终端进行更有针对性地交换。
实施例4
本实施例主要是对整个数据交换过程当中所交换数据的对vCalendar数据进 行XML封装的说明,通过在vCalendar的数据之上叠加整个vCalendar数据的序列号和条目信息,让用户在整个数据交换过程当中可以有选择的对部分条目进行交换。
终端所支持的日程表数据格式可以参考vCalendar 1.0的要求,其数据格式满足如下的要求和定义。
表2日程表条目和vCalendar字段的对应关系
日程表条目的内容 | 字段名 |
起始时间 | Start Time |
结束时间 | Stop Time |
描述 | Description |
循环类型 | Recur Type |
事件内容 | Body |
提醒方式 | Notify Type |
振铃方式 | Ringer Type |
持续时间 | Duration |
终端在对日程表进行数据交换的过程当中,应支持将终端的日程表数据按照XML的形式进行封装,所生成的XML文件用于对所需交换的日程表数据进行交换。在日程表数据进行XML的封装过程中,需要遵守如下的DTD:
<!ELEMENT vCalendar(vCalendarInfo*)>
<!ELEMENT vCalendarInfo(vCalendarField*)>
<!ATTLIST vCalendarInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT vCalendarField EMPTY>
<!ATTLIST vCalendarField
STARTTIME CDATA#REQUIRED
STOPTIME CDATA#REQUIRED
DESCRIPTION CDATA#REQUIRED
RECURTYPE CDATA#REQUIRED
BODY CDATA#REQUIRED
NOTIFYTYPE CDATA#REQUIRED
RINGERTYPE CDATA#REQUIRED
DURATION CDATA#REQUIRED
>
在上述的DTD当中,主要是对vCalendar数据如何在数据交换文件格式当中体现进行规定。所有的vCalendar数据都是XML中vCalendar元素的子元素,每个vCalendar元素当中可以包含0个或者多个的vCalendarInfo元素。每个vCalendarInfo元素当中包含一个vCalendar数据的序号以及一个以XML形式进行封装的vCalendar数据。
终端可以根据上述的DTD的描述生成数据交换文件,以及对该文件进行解析。出于兼容性的考虑,终端可以支持Schema的方式进行XML文件的生成。其形式如下所示:
<!--
==================================================
vCalendar Data
==================================================
-->
<xs:element name=″vCalendar″type=″vCalendarType″/>
<xs:complexType name=″vCalendarType″>
<xs:sequence>
<xs:element name=″vCalendarInfo″type=″vCalendarInfoType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″vCalendarInfoType″>
<xs:sequence>
<xs:element name=″vCalendarField″type=″vCalendarFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″vCalendarFieldType″>
<xs:attribute name=″STARTTIME″type=″xs:string″use=″required″/>
<xs:attribute name=″STOPTIME″type=″xs:string″use=″required″/>
<xs:attribute name=″DESCRIPTION″type=″xs:string″use=″required″/>
<xs:attribute name=″RECURTYPE″type=″xs:string″use=″required″/>
<xs:attribute name=″BODY″type=″xs:string″use=″required″/>
<xs:attribute name=″NOTIFYTYPE″type=″xs:string″use=″required″/>
<xs:attribute name=″RINGERTYPE″type=″xs:string″use=″required″/>
<xs:attribute name=″DURATION″type=″xs:string″use=″required″/>
</xs:complexType>
上述是终端在生成和转换相关数据内容是所需要遵守的DTD/Schema的格式。终端可以参考上述格式生成/解析XML文档。
在上述的DTD当中,存在如下的Sequence的字段。
Sequence CDATA#REQUIRED
这个字段必须出现在每一个vCalendar的条目当中。通过这个序号,终端在解析数据交换的中间文件的时候,可以选择性的对第x条数据进行交换,而不用一次对所有的数据进行交换,从而节约交换的时间,同时可以针对数据能力有限,存储空间有限的终端进行更有针对性地交换。
实施例5
本实施例主要是对整个数据交换过程当中所交换数据的对SMS数据进行XML封装的说明,通过在SMS的数据之上叠加整个SMS数据的序列号和条目信息,让用户在整个数据交换过程当中可以有选择的对部分条目进行交换。
终端所支持的SMS数据格式可以参考SMS的相关要求,其数据格式满足如下的要求和定义。
表3SMS条目和字段的对应关系
SMS条目的内容 | 字段名 |
源地址 | Original_Address |
目的地址 | Destination_Address |
消息数据 | Data |
时间信息 | TimeStamp |
类型字段 | SMS_Type |
终端在对短消息进行数据交换的过程当中,应支持将终端的短消息数据按照 XML的形式进行封装,所生成的XML文件用于对所需交换的短消息数据进行交换。在短消息数据进行XML的封装过程中,需要遵守如下的DTD:
<!ELEMENT SMS(SMSInfo*)>
<!ELEMENT SMSInfo(SMSField*)>
<!ATTLIST SMSInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT SMSField(MT_SMS*|MO_SMS*|Draft_SMS*|
Delivery_Report*)>
<!ATTLIST SMSField
Orignal_Address CDATA #REQUIRED
Destination_Address CDATA#IMPLIED
Data CDATA#REQUIRED
TimeStamp CDATA #REQUIRED
>
<!ELEMENT MT_SMS(#PCDATA)>
<!ELEMENT MO_SMS(#PCDATA)>
<!ELEMENT Draft_SMS(#PCDATA)>
<!ELEMENT Delivery_Report(#PCDATA)>
在上述的DTD当中,主要是对SMS数据如何在数据交换文件格式当中体现进行规定。所有的SMS数据都是XML中SMS元素的子元素,每个SMS元素当中可以包含0个或者多个的SMSInfo元素。每个SMSInfo元素当中包含一个SMS数据的序号以及一个以XML形式进行封装的SMS数据。
具体的SMS的数据字段的含义参考本规范的第一部分,本部分仅按照W3C的规则对第一部分数据格式所要求的SMS字段进行了XML形式的封装定义。
终端可以根据上述的DTD的描述生成数据交换文件,以及对该文件进行解析。出于兼容性的考虑,终端可以支持Schema的方式进行XML文件的生成。其形式如下所示:
<!--
=========================================
SMS Data
================================================
-->
<xs:element name=″SMS″type=″SMSType″/>
<xs:complexType name=″SMSType″>
<xs:sequence>
<xs:element name=″SMSInfo″type=″SMSInfoType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″SMSInfoType″>
<xs:sequence>
<xs:element name=″SMSField″type=″SMSFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″SMSFieldType″>
<xs:choice>
<xs:element name=″MT_SMS″type=″xs:boolean″default=″true″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″MO_SMS″type=″xs:boolean″default=″false″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″Draft_SMS″type=″xs:boolean″default=″false″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″Delivery_Report″type=″xs:boolean″
default=″false″minOccurs=″0″maxOccurs=″unbounded″/>
</xs:choice>
<xs:attribute name=″Orignal_Address″type=″xs:unsignedInt″
use=″required″/>
<xs:attribute name=″Destination_Address″type=″xs:unsignedInt″
use=″optional″/>
<xs:attribute name=″Data″type=″xs:unsignedInt″use=″required″/>
<xs:attribute name=″TimeStamp″type=″xs:string″use=″required″/>
</xs:complexType>
上述是终端在生成和转换相关数据内容是所需要遵守的DTD/Schema的格式。终端可以参考上述格式生成/解析XML文档。
在上述的DTD当中,存在如下的Sequence的字段。
Sequence CDATA#REQUIRED
这个字段必须出现在每一个SMS的条目当中。通过这个序号,终端在解析数据交换的中间文件的时候,可以选择性的对第x条数据进行交换,而不用一次对所有的数据进行交换,从而节约交换的时间,同时可以针对数据能力有限,存储空间有限的终端进行更有针对性地交换。
实施例6
本实施例主要是对整个数据交换过程当中所交换数据的对MMS数据进行XML封装的说明,通过在MMS的数据之上叠加整个MMS数据的序列号和条目信息,让用户在整个数据交换过程当中可以有选择的对部分条目进行交换。
终端所支持的MMS数据格式可以参考MMS的相关要求,其数据格式满足如下的要求和定义。
表4MMS条目和字段的对应关系
MMS条目的内容 | 字段名 |
消息类型 | Message_Type |
事务ID | Transaction_ID |
MMS版本 | MMS_Version |
消息ID | Message_ID |
发送者地址 | Sender_address |
内容类型 | Content_type |
接收者地址 | Recipient_address |
消息等级 | Message_class |
时间日期 | Date_and_time |
优先级别 | Priority |
主题 | Subject |
消息状态 | MM_State |
内容 | Content |
字符集 | Charset |
内容传输编码 | Content_Transfer_Encoding |
内容位置 | Content_Location |
内容数据 | Data |
终端在对多媒体消息进行数据交换的过程当中,应支持将终端的多媒体消息数据按照XML的形式进行封装,所生成的XML文件用于对所需交换的多媒体消息数据进行交换。在多媒体消息数据进行XML的封装过程中,需要遵守如下的DTD:
<!ELEMENT MMS(MMSInfo*)>
<!ELEMENT MMSInfo(MMSField*)>
<!ATTLIST MMSInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT MMSField(MMSContent*,ContentInMMS*)>
<!ATTLIST MMSField
Message_Type CDATA#REQUIRED
MMS_Version CDATA#REQUIRED
Message_ID CDATA#REQUIRED
Sender_address CDATA#REQUIRED
Recipient_address CDATA#REQUIRED
Message_class CDATA#REQUIRED
Date_and_time CDATA#REQUIRED
Priority CDATA#REQUIRED
Subject CDATA#REQUIRED
MM_State CDATA#REQUIRED
>
<!ELEMENT MMSContent EMPTY>
<!ATTLIST MMSContent
charset CDATA#REQUIRED
Content-Transfer-Encoding CDATA#REQUIRED
Content-Location CDATA#REQUIRED
Data CDATA#REQUIRED
>
<!ELEMENT ContentInMMS EMPTY>
<!ATTLIST ContentInMMS
ContentInfo CDATA#REQUIRED
Type CDATA#REQUIRED
Start CDATA#REQUIRED
>
在上述的DTD当中,主要是对MMS数据如何在数据交换文件格式当中体现进行规定。所有的MMS数据都是XML中MMS元素的子元素,每个MMS元素当中可以包含0个或者多个的MMSInfo元素。每个MMSInfo元素当中包含一个MMS数据的序号以及一个以XML形式进行封装的Email数据。
具体的MMS的数据字段的含义参考本规范的第一部分,本部分仅按照W3C的规则对第一部分数据格式所要求的MMS字段进行了XML形式的封装定义。
终端可以根据上述的DTD的描述生成数据交换文件,以及对该文件进行解析。出于兼容性的考虑,终端可以支持Schema的方式进行XML文件的生成。其形式如下所示:
<!--
==================================================
MMS Data
==================================================
-->
<xs:element name=″MMS″type=″MMSType″/>
<xs:complexType name=″MMSType″>
<xs:sequence>
<xs:element name=″MMSInfo″type=″MMSInfoType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″MMSInfoType″>
<xs:sequence>
<xs:element name=″MMSField″type=″MMSFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″
use=″required″/>
</xs:complexType>
<xs:complexType name=″MMSFieldType″>
<xs:sequence>
<xs:element name=″MMSContent″type=″MMSContentType″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″ContentInMMS″type=″ContentInMMSType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Message_Type″type=″xs:string″
use=″required″/>
<xs:attribute name=″MMS_Version″type=″xs:string″
use=″required″/>
<xs:attribute name=″Message_ID″type=″xs:string″
use=″required″/>
<xs:attribute name=″Sender_address″type=″xs:string″
use=″required″/>
<xs:attribute name=″Recipient_address″type=″xs:string″
use=″required″/>
<xs:attribute name=″Message_class″type=″xs:string″
use=″required″/>
<xs:attribute name=″Date_and_time″type=″xs:string″
use=″required″/>
<xs:attribute name=″Priority″type=″xs:string″
use=″required″/>
<xs:attribute name=″Subject″type=″xs:string″
use=″required″/>
<xs:attribute name=″MM_State″type=″xs:string″
use=″required″/>
</xs:complexType>
<xs:complexType name=″MMSContentType″>
<xs:attribute name=″charset″type=″xs:string″
use=″required″/>
<xs:attribute name=″Content-Transfer-Encoding″
type=″xs:string″use=″required″/>
<xs:attribute name=″Content-Location″type=″xs:string″
use=″required″/>
<xs:attribute name=″Data″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″ContentInMMSType″>
<xs:attribute name=″ContentInfo″type=″xs:string″
use=″required″/>
<xs:attribute name=″Type″type=″xs:string″use=″required″/>
<xs:attribute name=″Start″type=″xs:string″use=″required″/>
</xs:complexType>
上述是终端在生成和转换相关数据内容是所需要遵守的DTD/Schema的格式。终端可以参考上述格式生成/解析XML文档。
在上述的DTD当中,存在如下的Sequence的字段。
Sequence CDATA #REQUIRED
这个字段必须出现在每一个MMS的条目当中。通过这个序号,终端在解析数据交换的中间文件的时候,可以选择性的对第x条数据进行交换,而不用一次对所有的数据进行交换,从而节约交换的时间,同时可以针对数据能力有限,存储空间有限的终端进行更有针对性地交换。
实施例7
本实施例主要是对整个数据交换过程当中所交换数据的对Email数据进行XML封装的说明,通过在Email的数据之上叠加整个Email数据的序列号和条目信息,让用户在整个数据交换过程当中可以有选择的对部分条目进行交换。
终端所支持的Email数据格式可以参考Email的相关要求,其数据格式满足如下的要求和定义。
表5E-mail数据条目和字段的对应关系
E-mail条目的内容 | 字段名 |
日期 | Date |
发送者 | From |
主题 | Subject |
接收者 | To |
回复地址 | Reply_to |
MIME版本 | MIME_version |
回复路径 | Return_Path |
传递信息 | Delivered_To |
接收信息 | Received |
抄送 | CC |
密送 | BCC |
消息ID | Message_ID |
内容传输编码 | Content_Transfer_Encoding |
内容描述 | Content_Description |
内容归属 | Content_Disposition |
内容ID | Content_ID |
内容类型 | Content_type |
内容等级 | Content_class |
字符集 | Charset |
内容数据 | Data |
附件名 | Name |
附件文件名 | FileName |
终端在对电子邮件进行数据交换的过程当中,应支持将终端的电子邮件数据按照XML的形式进行封装,所生成的XML文件用于对所需交换的电子邮件数据进行交换。在电子邮件数据进行XML的封装过程中,需要遵守如下的DTD:
<!ELEMENT Email(EmailInfo*)>
<!ELEMENT EmailInfo(EmailField*)>
<!ATTLIST EmailInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT EmailField(EmailContent*)>
<!ATTLIST EmailField
Return-Path CDATA#REQUIRED
Delivered-To CDATA#REQUIRED
Received CDATA#REQUIRED
Date CDATA#REQUIRED
CC CDATA#REQUIRED
BCC CDATA#REQUIRED
Message-ID CDATA#REQUIRED
From CDATA#REQUIRED
Subject CDATA#REQUIRED
To CDATA#REQUIRED
Reply-to CDATA#REQUIRED
MIME-version CDATA#REQUIRED
Content-Type CDATA#REQUIRED
>
<!ELEMENT EmailContent EMPTY>
<!ATTLIST EmailContent
Content-Transfer-Encoding CDATA#REQUIRED
Content-Description CDATA#REQUIRED
Content-Disposition CDATA#REQUIRED
Content-ID CDATA#REQUIRED
Content-type CDATA#REQUIRED
Content-class CDATA#REQUIRED
charset CDATA#REQUIRED
Data CDATA#REQUIRED
Name CDATA#REQUIRED
Filename CDATA#REQUIRED
>
在上述的DTD当中,主要是对Email数据如何在数据交换文件格式当中体现进行规定。所有的Email数据都是XML中Email元素的子元素,每个Email元素当中可以包含0个或者多个的EmailInfo元素。每个EmailInfo元素当中包含一个Email数据的序号以及一个以XML形式进行封装的Email数据。
具体的Email的数据字段的含义参考本规范的第一部分,本部分仅按照W3C的规则对第一部分数据格式所要求的Email字段进行了XML形式的封装定义。
终端可以根据上述的DTD的描述生成数据交换文件,以及对该文件进行解析。出于兼容性的考虑,终端可以支持Schema的方式进行XML文件的生成。其形式如下所示:
<!--
================================================
Email Data
================================================
-->
<xs:element name=″Email″type=″EmailType″/>
<xs:complexType name=″EmailType″>
<xs:sequence>
<xs:element name=″EmailInfo″type=″EmailInfoType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″EmailInfoType″>
<xs:sequence>
<xs:element name=″EmailField″type=″EmailFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″EmailFieldType″>
<xs:sequence>
<xs:element name=″EmailContent″type=″EmailContentType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Return-Pah″type=″xs:string″use=″required″/>
<xs:attribute name=″Delivered-To″type=″xs:string″ use=″required″/>
<xs:attribute name=″Received″type=″xs:string″use=″required″/>
<xs:attribute name=″Date″type=″xs:string″use=″required″/>
<xs:attribute name=″CC″type=″xs:string″use=″required″/>
<xs:attribute name=″BCC″type=″xs:string″use=″required″/>
<xs:attribute name=″Message-ID″type=″xs:string″use=″required″/>
<xs:attribute name=″From″type=″xs:string″use=″required″/>
<xs:attribute name=″Subject″type=″xs:string″use=″required″/>
<xs:attribute name=″To″type=″xs:string″use=″required″/>
<xs:attribute name=″Reply-to″type=″xs:string″use=″required″/>
<xs:attribute name=″MIME-version″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-Type″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″EmailContentType″>
<xs:attribute name=″Content-Transfer-Encoding″type=″xs:string″
use=″required″/>
<xs:attribute name=″Content-Description″type=″xs:string″
use=″required″/>
<xs:attribute name=″Content-Disposition″type=″xs:string″
use=″required″/>
<xs:attribute name=″Content-ID″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-type″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-class″type=″xs:string″ use=″required″/>
<xs:attribute name=″charset″type=″xs:string″use=″required″/>
<xs:attribute name=″Data″type=″xs:string″use=″required″/>
<xs:attribute name=″Name″type=″xs:string″use=″required″/>
<xs:attribute name=″Filename″type=″xs:string″use=″required″/>
</xs:complexType>
</xs:schema>
上述是终端在生成和转换相关数据内容是所需要遵守的DTD/Schema的格式。终端可以参考上述格式生成/解析XML文档。
在上述的DTD当中,存在如下的Sequence的字段。
Sequence CDATA #REQUIRED
这个字段必须出现在每一个Email的条目当中。通过这个序号,终端在解析数据交换的中间文件的时候,可以选择性的对第x条数据进行交换,而不用一次对所有的数据进行交换,从而节约交换的时间,同时可以针对数据能力有限,存储空间有限的终端进行更有针对性地交换。
实施例8
本实施例主要是对整个数据交换过程当中所交换数据的Email和MMS数据当中所携带的多媒体文件的封装的说明。
消息类数据所携带的附件的编码方式主要采用Base64编码的方式进行。Base64是一种很常见的编码规范,其作用是将二进制序列转换为人类可读的ASCII字符序列,常用在需用通过文本协议(比如HTTP和SMTP)来传输二进制数据的情况下。Base64采用了一种很简单的编码转换:对于待编码数据,以3个字节为单位,依次取6位数据并在前面补上两个0形成新的8位编码,由于3*8=4*6,这样3个字节的输入会变成4个字节的输出,长度上增加了1/3。
本发明实施例当中,在多媒体消息和电子邮件的文件格式当中需要涉及多媒体文件附件的封装。在上述的消息类信息的交换过程当中,多媒体文件通过Base64的编码方式存放在XML的<MMSContent>或<EmailContent>元素当中,同时在<MMSContent>或<EmailContent>元素当中利用其他的XML数据信息对多媒体文件进行描述,这些描述信息包括:
<Content-Type>,主要描述附件的类型,可以用MIME类型进行描述。
<charset>主要描述文件的字符集。
<Content-Transfer-Encoding>,主要描述文件传输中的编码方式。
<name>主要对附件名进行描述。
<Content-Disposition>,主要对文件在消息当中所扮演的角色进行描述。
<filename>,主要对附件的文件名进行描述。
<Content-Location>,主要对附件的存放位置进行描述等,具体在交换文件当中所携带的文件的描述信息请参见多媒体消息和电子邮件部分的DTD/Schema的规定。
多媒体消息附件的多媒体文件封装如下例所示:
<MMS>
<MMSInfo Sequence=″1″>
<MMSField Date_and_time=″Wed,07Jun 2006 17:54:49 +0800″Message_ID=″060717544991000009318″Message_class=″Personal″Message_Type=″MM1_retrieve.RES″MM_State=″Retrieved″MMS_Version=″1.2″Priority=″Normal″Recipient_address=″jian.yang@huawei.com″Sender_address=″+8613910916446@mmsc-bj-rsv.monternet.com″Subject=″Hello″>
<ContentInMMS ContentInfo=″Multipart/Related″Type=″application/smil″Start=″s.smil″/>
<MMSContent charset=″utf-8″Content-Transfer-Encoding=″Base64″Content-Location=″8712df01.asc″Data=″MDblubQ25pyINuaXpeaYr+S4qjY25aSn6aG655qE5ZCJ56W15pe15a2Q44CC5Zyo6L+Z5Liq57605aW955qE5pe25Yi777yM56Wd5oKo5bm456aP5ZCJ56W177yM5LqL5Lia6aG66aG65Yip5Yip77yM55Sf5rS75byA5byA5b+D5b+D77yBAA==″Content-Type=″text/plain″/>
<MMSContent charset=″utf-8″Content-Transfer-Encoding=″Base64″Content-Location=″s.smil″Data=″PHNtaWw+CjxoZWFkPgo8bGF5b3V0Pgo8cm9vdC1sYXlvdXQgd21kdGg9IjI0MCIgaGVpZ2h0PSIyNzQiLz4KPHJlZ21vbiBpZD0iSW1hZ2UiIHdpZHRoPSIxMDA1IiBoZWlnaHQ9IjEwMCUiIGxlZnQ9IjA1IiB0b3A9IjAlIiAvPgo8cmVnaW9uIGlkPSJUZXh0IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBsZWZ0PSIwJSIgdG9wPSIwJSIgLz4KPC9sYXlvdXQ+CjwvaGVhZD4KPGJvZHk+CjxwYXIgZHVyPSI3MDAwbXMiPgo8dGV4dCBzcmM9Ijg3MTJkZjAxLmFzYyIgcmVnaW9uPSJUZXh0IiBkdXI9IjcwMDBtcyIgLz4KPC9wYXI+Cj wvYm9keT4KPC9zbWlsPgo=″Content-Type=″application/smil″/>
</MMSField>
</MMSInfo>
</MMS>
电子邮件附件的多媒体文件封装如下例所示:
<Email>
<Email Info Sequence=″1″>
<EmailField CC=″Alice@sample.com″Date=″Tue,26Jun 200714:15:16+0800″From=″Alice<Alice@sample.com>″MIME-version=″1.0″Subject=″FYI″To=″Alice@sample.com″Content-Type=″multipart/mixed″>
<EmailContent Content-Transfer-Encoding=″base64″Content-type=″text/plain″charset=″gb2312″Data=″R11JDQoNCg0KDQpDaGVuIEd1b3FpYW8gs8K5+sfHICBSJkQgRW5naW51ZXINCk1vYmlsZSBUZXJtaW5hbCBEZXAuDQpIdWF3ZWkgVGVjaG5vbG9naWVzIENvLixMdGQuDQpIdWEgV2VpIEJsZC4sTm8uMyBYaW54aSBSZC4sU2hhbmctRGkgSW5mb3JtYXRpb24gDQpJbmR1c3RyeSBCYXNlLEhhaS1EaWFuIERpc3RyaWN0IEJlaWppbmcgUC5SLkNoaW5hIA0KWklQo7oxMDAwODUgIAOKVGVsOiArODYtMTAtODI4MzYzNjYNCkZBWKO6Kzg2LTEwLTgyODM2MTMzDQpFbWFpbDogY2hlbmd1b3FpYW9AaHVhd2VpLmNvbQ==″/>
<EmailContent Content-Transfer-Encoding=″base64″Content-type=″text/html″charset=″gb2312″Data=″PCFETONUWVBFIEhUTUwgUFVCTE1DICItLy9XMOMvL0RURCBIVE1MIDQuMCBUcmFuc210aW9uYWwvL0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiI+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4wMC4yODAwLjE1NjEiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8Qk9EWSBiZ0NvbG9yPSNjY2U4Y2Y+DQo8RElWPjxGT05UIHNpemU9Mj5GWUk8L0ZPTlQ+PC9ESVY+DQo8RElWP jxGT05UIHNpemU9Mj48L0ZPTlQ+Jm5ic3A7PC9ESVY+DQo8RElWPjxGT05UIHNpemU9Mj48L0ZPTlQ+Jm5ic3A7PC9ESVY+DQo8RElWPiZuYnNwOzwvRElWPg0KPERJVj48Rk9OVCBzaXplPTI+Q2hlbiBHdW9xaWFvILPCufrHxyZuYnNwOyBSJmFtcDtEIEVuZ21uZWVyPEJSPk1vYmlsZSBUZXJtaW5hbCANCkRlcC48Q1I+SHVhd2VpIFRlY2hub2xvZ211cyBDby4sTHRkLjxCUj5IdWEgV2VpIEJsZC4sTm8uMyBYaW54aSBSZC4sU2hhbmctRGkgDQpJbmZvcm1hdGlvbiA8QlI+SW5kdXN0cnkgQmFzZSxIYWktRGlhbiBEaXN0cmljdCBCZWlqaW5nIFAuUi5DaGluYSANCjxCUj5aSVCjujEwMDA4NSZuYnNwOyA8Q1I+VGVsOiArODYtMTAtODI4MzYzNjY8Q1I+RkFYo7orODYtMTAtODI4MzYxMzM8Q1I+RW1haWw6IA0KPEEgDQpocmVmPSJtYWlsdG86Y2hlbmd1b3FpYW9AaHVhd2VpLmNvbSI+Y2hlbmd1b3FpYW9AaHVhd2VpLmNvbTwvQT48L0ZPTlQ+PC9ESVY+PC9CT0RZPjwvSFRNTD4NCg==″/>
<EmailContent Content-Transfer-Encoding=″7bit″
Content-Description=″attachment″Content-type=″text/plain″Data=just test.″
Name=attachment.txt″Filename=attachment.txt″/>
</EmailField>
</EmailInfo>
</Email>
实施例9
本实施例主要是对整个数据交换过程当中所交换数据文件的使用方法和流程的一个说明。
在本发明实施例当中,需要进行数据交换的终端,根据数据交换文件格式的要求,生成相应的交换文件,并且将需要交换的数据信息携带在该文件当中。
所生成的交换文件的后缀名采用*.udx的名称,所交换的信息包括电话簿、日程表、短消息,多媒体消息以及电子邮件的相关信息。
接收到*.udx的交换文件之后,根据数据交换文件的格式要求对该文件进行解析,并提取出其中所携带的相应数据信息。根据实际的需要,用户可以浏览这些 信息,也可以将这些信息备份到目标终端上。
整个数据交换的过程中,数据交换文件的生成主要利用数据交换软件实现,该软件可以是终端上的专用软件,也可以是通过数据线和终端相连的PC上的专用软件。
实施例10
本实施例主要是对整个数据交换过程当中所交换数据文件所需要参考的整体的DTD/Schema进行描述。
数据交换流程的参考参见先前的实施例。在整个数据过程当中,需要将所交换的数据用XML的方式进行封装,在封装的过程当中需要参考目标格式的XML文件进行。为了能够满足在整个数据交换过程的需要,需要在XML的DTD/Schema当中定义电话簿、日程表、短消息、多媒体消息以及电子邮件的XML的封装形式。
在本实施例当中规定的XML文件的结构分为六部分,他们分别是头信息部分,电话簿信息部分,日程表信息部分,短消息信息部分,多媒体消息信息部分和电子邮件信息部分。
头信息的定义。为了使整个数据交换的整体信息能够在交换开始之前被目的方识别,我们还需要对数据交换过程中的整体信息进行规定。这样的规定可以让用户在数据交换过程当中完成能力的适配,根据终端是否支持该功能的数据,所支持的该功能的数据的容量是否能和终端进行匹配等信息对终端完成适配的过程。同时根据这些头信息,在完成数据交换的过程之后,还能够对所交换的数据进行校验和错误重传。所有的头信息在
<!ELEMENT DataExchangeInfo(RecordInfo,vCard,vCalendar,SMS,MMS,Email)>
的数据格式之中定义。
电话簿信息部分。根据vCard的定义,我们将vCard的数据格式用XML的形式进行封装。与此同时,在每一条vCard格式所定义的XML数据单元当中,有一个序列号同这条数据相对应,以便用户能够对vCard数据有选择的进行交换。所有的 vCard数据在
<!ELEMENT vCard(vCardInfo*)>
的数据格式之中定义。
日程表信息部分。根据vCalendar的定义,我们将vCalendar的数据格式用XML的形式进行封装。与此同时,在每一条vCalendar格式所定义的XML数据单元当中,有一个序列号同这条数据相对应,以便用户能够对vCalendar数据有选择的进行交换。所有的vCalendar数据在
<!ELEMENT vCalendar(vCalendarInfo*)>
的数据格式之中定义。
短消息信息部分。根据SMS国际规范的定义,我们将SMS的数据格式用XML的形式进行封装。与此同时,在每一条SMS格式所定义的XML数据单元当中,有一个序列号同这条数据相对应,以便用户能够对SMS数据有选择的进行交换。所有的SMS数据在
<!ELEMENT SMS(SMSInfo*)>
的数据格式之中定义。
多媒体消息信息部分。根据MMS国际规范的定义,我们将MMS的数据格式用XML的形式进行封装。与此同时,在每一条MMS格式所定义的XML数据单元当中,有一个序列号同这条数据相对应,以便用户能够对MMS数据有选择的进行交换。所有的MMS数据在
<!ELEMENT MMS(MMSInfo*)>
的数据格式之中定义。
电子邮件信息部分。将Email的数据格式用XML的形式进行封装。与此同时, 在每一条Email格式所定义的XML数据单元当中,有一个序列号同这条数据相对应,以便用户能够对Email数据有选择的进行交换。所有的Email数据在
<!ELEMENT Email(EmailInfo*)>
的数据格式之中定义。
在整个的数据交换过程当中,XML文件的生成需要参考如下的格式完成。
<?xml version=″1.0″encoding=″UTF-8″?>
<!ELEMENT DataExchangeInfo(RecordInfo,vCard,vCalendar,SMS,MMS,
Email)>
<!ATTLIST DataExchange Info
UserInfo CDATA#REQUIRED
UserAgent CDATA#REQUIRED
DeviceInfo CDATA#REQUIRED
Date CDATA#REQUIRED
Language CDATA#REQUIRED
>
<!ELEMENT RecordInfo EMPTY>
<!ATTLIST RecordInfo
RecordOfvCard CDATA#REQUIRED
RecordOfvCalendar CDATA#REQUIRED
RecordOfSMS CDATA#REQUIRED
RecordOfMMS CDATA#REQUIRED
RecordOfEmail CDATA#REQUIRED
>
<!ELEMENT vCard(vCardInfo*)>
<!ELEMENT vCardInfo(vCardField*)>
<!ATTLIST vCardInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT vCardField EMPTY>
<!ATTLIST vCardField
ADR CDATA#REQUIRED
ADRHOME CDATA#REQUIRED
ADRWORK CDATA#REQUIRED
BDAY CDATA#REQUIRED
ELVOICEHOME CDATA#REQUIRED
EMAIL CDATA#REQUIRED
EMAILHOME CDATA#REQUIRED
EMAILWORK CDATA#REQUIRED
N CDATA#REQUIRED
ORG CDATA#REQUIRED
Sequence CDATA#REQUIRED
TEL CDATA#REQUIRED
TELCELL CDATA#REQUIRED
TELCELLHOME CDATA#REQUIRED
TELCELLWORK CDATA#REQUIRED
TELFAX CDATA#REQUIRED
TELFAXHOME CDATA#REQUIRED
TELFAXWORK CDATA#REQUIRED
TELHOME CDATA#REQUIRED
TELVIDEO CDATA#REQUIRED
TELVIDEOCELL CDATA#REQUIRED
TELVIDEOHOME CDATA#REQUIRED
TELVIDEOWORK CDATA#REQUIRED
TELVOICE CDATA#REQUIRED
TELVOICEHOME CDATA#REQUIRED
TELVOICEWORK CDATA#REQUIRED
TELWORK CDATA#REQUIRED
TITLE CDATA#REQUIRED
URL CDATA#REQUIRED
URLHOME CDATA#REQUIRED
URLWORK CDATA#REQUIRED
>
<!ELEMENT vCalendar(vCalendarInfo*)>
<!ELEMENT vCalendarInfo(vCalendarField*)>
<!ATTLIST vCalendarInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT vCalendarField EMPTY>
<!ATTLIST vCalendarField
STARTTIME CDATA#REQUIRED
STOPTIME CDATA#REQUIRED
DESCRIPTION CDATA#REQUIRED
RECURTYPE CDATA#REQUIRED
BODY CDATA#REQUIRED
NOTIFYTYPE CDATA#REQUIRED
RINGERTYPE CDATA#REQUIRED
DURATION CDATA#REQUIRED
>
<!ELEMENT SMS(SMSInfo*)>
<!ELEMENT SMSInfo(SMSField*)>
<!ATTLIST SMSInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT SMSField(MT_SMS*|MO_SMS*|Draft_SMS*|
Delivery_Report*)>
<!ATTLIST SMSField
Orignal_Address CDATA#REQUIRED
Destination Address CDATA#IMPLIED
Data CDATA#REQUIRED
TimeStamp CDATA#REQUIRED
>
<!ELEMENT MT_SMS(#PCDATA)>
<!ELEMENT MO_SMS(#PCDATA)>
<!ELEMENT Draft_SMS(#PCDATA)>
<!ELEMENT Delivery_Report(#PCDATA)>
<!ELEMENT MMS(MMSInfo*)>
<!ELEMENT MMSInfo(MMSField*)>
<!ATTLIST MMSInfo
Sequence CDATA#REQUIRED
>
<!ELEMENT MMSField(MMSContent*,ContentInMMS*)>
<!ATTLIST MMSField
Message_Type CDATA#REQUIRED
MMS_Version CDATA#REQUIRED
Message_ID CDATA#REQUIRED
Sender_address CDATA#REQUIRED
Recipient_address CDATA#REQUIRED
Message_class CDATA#REQUIRED
Date_and_time CDATA#REQUIRED
Priority CDATA#REQUIRED
Subject CDATA#REQUIRED
MM_State CDATA#REQUIRED
>
<!ELEMENT MMSContent EMPTY>
<!ATTLIST MMSContent
charset CDATA#REQUIRED
Content-Transfer-Encoding CDATA#REQUIRED
Content-Location CDATA#REQUIRED
Data CDATA#REQUIRED
Content-Type CDATA #REQUIRED
>
<!ELEMENT ContentInMMS EMPTY>
<!ATTLIST ContentInMMS
ContentInfo CDATA #REQUIRED
Type CDATA #REQUIRED
Start CDATA #REQUIRED
>
<!ELEMENT Email(EmailInfo*)>
<!ELEMENT EmailInfo(EmailField*)>
<!ATTLIST EmailInfo
Sequence CDATA #REQUIRED
>
<!ELEMENT EmailField(EmailContent*)>
<!ATTLIST EmailField
Return-Path CDATA#REQUIRED
Delivered-To CDATA #REQUIRED
Received CDATA#REQUIRED
Date CDATA #REQUIRED
CC CDATA #REQUIRED
BCC CDATA #REQUIRED
Message-ID CDATA#REQUIRED
From CDATA #REQUIRED
Subject CDATA #REQUIRED
To CDATA#REQUIRED
Reply-to CDATA #REQUIRED
MIME-version CDATA #REQUIRED
Content-Type CDATA #REQUIRED
>
<!ELEMENT EmailContent EMPTY>
<!ATTLIST EmailContent
Content-Transfer-Encoding CDATA#REQUIRED
Content-Description CDATA#REQUIRED
Content-Disposition CDATA#REQUIRED
Content-ID CDATA#REQUIRED
Content-type CDATA#REQUIRED
Content-class CDATA#REQUIRED
charset CDATA#REQUIRED
Data CDATA#REQUIRED
Name CDATA#REQUIRED
Filename CDATA #REQUIRED
>
由于终端以及客户端软件对整个XML所支持的情况不完全相同,因此W3C规定了两种用来生成XML数据封装的技术,他们分别是DTD和Schema。前文对数据交换过程当中的DTD格式进行了规定,下面是和上文等同含义的Schema的定义。
对于上文当中不同信息部分的内容,本Schema部分用====在Schema当中进行分隔。
<?xml version=″1.0″encoding=″UTF-8″?>
<!DOCTYPE xs:schema SYSTEM″http://www.sample.com/udx.xsd″>
<xs:schema xmlns:xs=″http://www.w3.org/2001/XMLSchema″
elementFormDefault=″qualified″attributeFormDefault=″unqualified″>
<!--
==================================================
Header Information
====================================
-->
<xs:element name=″DataExchangeInfo″type=″DataExchangeInfoType″/>
<xs:complexType name=″DataExchangeInfoType″>
<xs:sequence>
<xs:element name=″RecordInfo″type=″RecordInfoType″/>
<xs:element name=″vCard″type″=″vCardType″/>
<xs:element name=″vCalendar″type=″vCalendarType″/>
<xs:element name=″SMS″type=″SMSType″/>
<xs:element name=″MMS″type=″MMSType″/>
<xs:element name=″Email″type=″EmailType″/>
</xs:sequence>
<xs:attribute name=″UserInfo″type=″xs:string″use=″required″/>
<xs:attribute name=″UserAgent″type=″xs:string″use=″required″/>
<xs:attribute name=″DeviceInfo″type=″xs:string″use=″required″/>
<xs:attribute name=″Date″type=″xs:string″use=″required″/>
<xs:attribute name=″Language″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″RecordInfoType″>
<xs:attribute name=″RecordOfvCard″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfvCalendar″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfSMS″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfMMS″type=″xs:string″use=″required″/>
<xs:attribute name=″RecordOfEmail″type=″xs:string″use=″required″/>
</xs:complexType>
<!--
=================================================
vCard Data
=================================================
-->
<xs:element name=″vCard″type=″vCardType″/>
<xs:complexType name=″vCardType″>
<xs:sequence>
<xs:element name=″vCardInfo″type=″vCardInfoType″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″vCardInfoType″>
<xs:sequence>
<xs:element name=″vCardField″type=″vCardFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″vCardFieldType″>
<xs:attribute name=″ADR″type=″xs:string″use=″required″/>
<xs:attribute name=″ADRHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″ADRWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″BDAY″type=″xs:string″use=″required″/>
<xs:attribute name=″ELVOICEHOM E″type=″xs:string″use=″required″/>
<xs:attribute name=″EMAIL″type=″xs:string″use=″required″/>
<xs:attribute name=″EMAILHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″EMAILWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″N″type=″xs:string″use=″required″/>
<xs:attribute name=″ORG″type=″xs:string″use=″required″/>
<xs:attribute name=″Sequence″type=″xs:string″use=″required″/>
<xs:attribute name=″TEL″type=″xs:string″use=″required″/>
<xs:attribute name=″TELCELL″type=″xs:string″use=″required″/>
<xs:attribute name=″TELCELLHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″TELCELLWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″TELFAX″type=″xs:string″use=″required″/>
<xs:attribute name=″TELFAXHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″TELFAXWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″TELHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVIDEO″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVIDEOCELL″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVIDEOHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVIDEOWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVOICE″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVOICEHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″TELVOICEWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″TELWORK″type=″xs:string″use=″required″/>
<xs:attribute name=″TITLE″type=″xs:string″use=″required″/>
<xs:attribute name=″URL″type=″xs:string″ use=″required″/>
<xs:attribute name=″URLHOME″type=″xs:string″use=″required″/>
<xs:attribute name=″URLWORK″type=″xs:string″use=″required″/>
</xs:complexType>
<!--
==================================================
vCalendar Data
=================================================
-->
<xs:element name=″vCalendar″type=″vCalendarType″/>
<xs:complexType name=″vCalendarType″>
<xs:sequence>
<xs:element name=″vCalendarInfo″type=″vCalendarInfoType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″vCalendarInfoType″>
<xs:sequence>
<xs:element name=″vCalendarField″type=″vCalendarFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″vCalendarFieldType″>
<xs:attribute name=″STARTTIME″type=″xs:string″use=″required″/>
<xs:attribute name=″STOPTIME″type=″xs:string″use=″required″/>
<xs:attribute name=″DESCRIPTION″type=″xs:string″use=″required″/>
<xs:attribute name=″RECURTYPE″type=″xs:string″use=″required″/>
<xs:attribute name=″BODY″type=″xs:string″use=″required″/>
<xs:attribute name=″NOTIFYTYPE″type=″xs:string″use=″required″/>
<xs:attribute name=″RINGERTYPE″type=″xs:string″use=″required″/>
<xs:attribute name=″DURATION″type=″xs:string″use=″required″/>
</xs:complexType>
<!--
==================================================
SMS Data
==================================================
-->
<xs:element name=″SMS″type=″SMSType″/>
<xs:complexType name=″SMSType″>
<xs:sequence>
<xs:element name=″SMSInfo″type=″SMSInfoType″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″SMSInfoType″>
<xs:sequence>
<xs:element name=″SMSField″type=″SMSFieldType″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″SMSFieldType″>
<xs:choice>
<xs:element name=″MT_SMS″type=″xs:boolean″default=″true″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″MO_SMS″type=″xs:boolean″default=″false″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″Draft_SMS″type=″xs:boolean″default=″false″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″Delivery_Report″type=″xs:boolean″
default=″false″minOccurs=″0″maxOccurs=″unbounded″/>
</xs:choice>
<xs:attribute name=″Orignal_Address″type=″xs:unsignedInt″
use=″required″/>
<xs:attribute name=″Destination_Address″type=″xs:unsignedInt″
use=″optional″/>
<xs:attribute name=″Data″type=″xs:unsignedInt″use=″required″/>
<xs:attribute name=″TimeStamp″type=″xs:string″use=″required″/>
</xs:complexType>
<!--
======================================
MMS Data
==================================================
-->
<xs:element name=″MMS″type=″MMSType″/>
<xs:complexType name=″MMSType″>
<xs:sequence>
<xs:element name=″MMSInfo″type=″MMSInfoType″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″MMSInfoType″>
<xs:sequence>
<xs:element name=″MMSField″type=″MMSFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″MMSFieldType″>
<xs:sequence>
<xs:element name=″MMSContent″type=″MMSContentType″
minOccurs=″0″maxOccurs=″unbounded″/>
<xs:element name=″ContentInMMS″type=″ContentInMMSType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Message_Type″type=″xs:string″use=″required″/>
<xs:attribute name=″MMS_Version″type=″xs:string″use=″required″/>
<xs:attribute name=″Message_ID″type=″xs:string″ use=″required″/>
<xs:attribute name=″Sender_address″type=″xs:string″use=″required″/>
<xs:attribute name=″Recipient_address″type=″xs:string″use=″required″/>
<xs:attribute name=″Message_class″type=″xs:string″use=″required″/>
<xs:attribute name=″Date_and_time″type=″xs:string″use=″required″/>
<xs:attribute name=″Priority″type=″xs:string″use=″required″/>
<xs:attribute name=″Subject″type=″xs:string″use=″required″/>
<xs:attribute name=″MM_State″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″MMSContentType″>
<xs:attribute name=″charset″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-Transfer-Encoding″type=″xs:string″
use=″required″/>
<xs:attribute name=″Content-Location″type=″xs:string″use=″required″/>
<xs:attribute name=″Data″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-Type″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″ContentInMMSType″>
<xs:attribute name=″ContentInfo″type=″xs:string″use=″required″/>
<xs:attribute name=″Type″type=″xs:string″use=″required″/>
<xs:attribute name=″Start″type=″xs:string″use=″required″/>
</xs:complexType>
<!--
=================================================
Email Data
=================================================
-->
<xs:element name=″Email″type=″EmailType″/>
<xs:complexType name=″EmailType″>
<xs:sequence>
<xs:element name=″EmailInfo″type=″EmailInfoType″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″EmailInfoType″>
<xs:sequence>
<xs:element name=″EmailField″type=″EmailFieldType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Sequence″type=″xs:unsignedInt″use=″required″/>
</xs:complexType>
<xs:complexType name=″EmailFieldType″>
<xs:sequence>
<xs:element name=″EmailContent″type=″EmailContentType″
minOccurs=″0″maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute name=″Return-Path″type=″xs:string″use=″required″/>
<xs:attribute name=″Delivered-To″type=″xs:string″use=″required″/>
<xs:attribute name=″Received″type=″xs:string″use=″required″/>
<xs:attribute name=″Date″type=″xs:string″use=″required″/>
<xs:attribute name=″CC″type=″xs:string″use=″required″/>
<xs:attribute name=″BCC″type=″xs:string″use=″required″/>
<xs:attribute name=″Message-ID″type=″xs:string″use=″required″/>
<xs:attribute name=″From″type=″xs:string″use=″required″/>
<xs:attribute name=″Subject″type=″xs:string″use=″required″/>
<xs:attribute name=″To″type=″xs:string″use=″required″/>
<xs:attribute name=″Reply-to″type=″xs:string″use=″required″/>
<xs:attribute name=″MIME-version″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-Type″type=″xs:string″use=″required″/>
</xs:complexType>
<xs:complexType name=″EmailContentType″>
<xs:attribute name=″Content-Transfer-Encoding″type=″xs:string″
use=″required″/>
<xs:attribute name=″Content-Description″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-Disposition″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-ID″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-type″type=″xs:string″use=″required″/>
<xs:attribute name=″Content-class″type=″xs:string″use=″required″/>
<xs:attribute name=″charset″type=″xs:string″ use=″required″/>
<xs:attribute name=″Data″type=″xs:string″use=″required″/>
<xs:attribute name=″Name″type=″xs:string″use=″required″/>
<xs:attribute name=″Filename″type=″xs:string″use=″required″/>
</xs:complexType>
</xs:schema>
以上是对本发明具体实施例的说明,在具体的实施过程中可对本发明的方法进行适当的改进,以适应具体情况的具体需要。因此可以理解,根据本发明的具体实施方式只是起示范作用,并不用以限制本发明的保护范围。
Claims (25)
1.一种终端间的数据交换方法,其特征在于,包括:
将需要交换的数据使用XML进行封装;
所述XML封装的数据信息包括头信息;
将所述XML封装的数据信息传送给进行数据交换的另一单元;
所述头信息,用于终端在数据交换之前检查是否能够实现交换的功能,并在交换完成后,对是否发生错误进行检查。
2.如权利要求1所述的方法,其特征在于,所述方法还包括将所述XML封装的数据信息封装在数据交换文件当中。
3.如权利要求1所述的方法,其特征在于,所述头信息包括数据条目的数量信息。
4.如权利要求3所述的方法,其特征在于,所述头信息还至少包括以下一种:用户信息,客户端信息,设备信息,日期信息,语言信息。
5.如权利要求1所述的方法,其特征在于,所述XML封装的数据信息包括具体数据信息,该具体数据信息至少包括以下一种:地址簿,日程表,短消息,多媒体消息以及电子邮件消息的条目信息。
6.如权利要求1所述的方法,其特征在于,所述方法还包括在所述XML封装的数据信息上叠加序列号和条目信息。
7.一种终端间的数据交换方法,其特征在于,包括:
接收XML封装的数据信息;
读取所述XML封装的数据信息中的头信息;
根据所述头信息进行数据交换;
所述头信息,用于终端在数据交换之前检查是否能够实现交换的功能,并在交换完成后,对是否发生错误进行检查。
8.如权利要求7所述的方法,其特征在于,在所述读取所述XML封装的数据信息中的头信息后还包括根据所述头信息判断是否具备交换能力;如果是则进行数据交换,如果否则拒绝进行数据交换。
9.如权利要求7或8所述的方法,其特征在于,所述方法还包括将所述XML封装的数据信息封装在数据交换文件中。
10.如权利要求7或8所述的方法,其特征在于,所述头信息还包括数据条目的数量信息.
11.如权利要求10所述的方法,其特征在于,所述头信息至少还包括以下一种:用户信息,客户端信息,设备信息,日期信息,语言信息。
12.如权利要求7或8所述的方法,其特征在于,所述XML封装的数据信息包括具体数据信息,该具体数据信息至少包括以下一种:地址簿,日程表,短消息,多媒体消息以及电子邮件消息的条目信息。
13.如权利要求7或8所述的方法,其特征在于,所述方法还包括在所述XML封装的数据信息上叠加序列号和条目信息。
14.如权利要求8所述的方法,其特征在于,所述根据所述头信息判断是否具备交换能力具体是:
根据数据类型判断是否支持该数据类型的数据交换;或,
根据该数据类型的条目信息判断是否有容量交换相应数据类型数据;或,
根据该数据类型的数据的条目数量信息判断在交换过程中是否有数据丢失或数据重复的情况发生。
15.如权利要求7所述的方法,其特征在于,判断交换的数据条目的数量与读取的XML文件头信息条目的数量是否一致,不一致时,则抛弃本次的交换过程,并提示用户有错误发生。
16.如权利要求7所述的方法,其特征在于,所述方法还包括检测到本地传输当中发生的错误,则提示用户重新发起交换的过程,以进行错误重传。
17.一种数据交换系统,其特征在于,包括:
第一数据交换设备,用于将数据传送给第一转换单元;
第二数据交换设备,用于接收第二转换单元传送的的数据;
第一转换单元,用于将第一数据交换设备传送的数据利用XML进行封装,所述XML封装的数据信息包括头信息;
第二转换单元,用于将XML转换成第二数据交换设备可接收的数据并传送给第二数据交换设备;
所述头信息,用于在数据交换之前检查是否能够实现交换的功能,并在交换完成后,对是否发生错误进行检查。
18.如权利要求17所述的系统,其特征在于,还包括:
检测单元,用于检测因为本地传输当中发生的错误;
第一提示单元,用于在所述检测单元检测到有本地传输当中发生的错误时提示用户重新发起交换的过程,从而进行错误重传。
19.如权利要求17所述的系统,其特征在于,还包括第一判断单元,用于根据所述头信息判断是否具备交换能力,所述第二转换单元在所述判断单元判断为具备交换能力时将XML文件转换成第二数据交换设备可接收的数据并传送给第二数据交换设备。
20.如权利要求17所述的系统,其特征在于,还包括:
第二判断单元,用于判断交换的数据条目的数量与读取的XML文件头信息条目的数量是否一致;
第二提示单元,用于所述第二判断单元判断单元判断交换的数据条目的数量与读取的XML文件头信息条目的数量不一致时抛弃本次的交换过程,并提示用户有错误发生。
21.一种数据交换设备,其特征在于,包括:
数据生成单元,用于生成要交换的数据并传送给数据转换单元;
数据转换单元,用于将要交换的数据转换成XML文件并传送,所述XML封装的数据信息包括头信息;
所述头信息,用于在数据交换之前检查是否能够实现交换的功能,并在交换完成后,对是否发生错误进行检查。
22.一种数据交换设备,其特征在于,包括:
数据转换单元,用于接收XML数据,读取XML封装的头信息和数据条目的数量信息,将XML数据转换成第二数据交换设备可接收的数据并传送给数据接收单元;
数据接收单元,用于接收数据转换单元传送的数据;
所述头信息,用于在数据交换之前检查是否能够实现交换的功能,并在交换完成后,对是否发生错误进行检查。
23.如权利要求22所述的设备,其特征在于,还包括:
检测单元,用于检测本地传输当中发生的错误;
第一提示单元,用于在所述检测单元检测到有本地传输当中发生的错误时提示用户重新发起交换的过程,从而进行错误重传。
24.如权利要求22所述的设备,其特征在于,还包括第一判断单元,用于根据所述头信息判断是否具备交换能力,所述数据转换单元在所述第一判断单元判断为具备交换能力时将XML文件转换成数据接收单元可接收的数据并传送给数据接收单元。
25.如权利要求22所述的设备,其特征在于,还包括:
第二判断单元,用于判断交换的数据条目的数量与读取的XML文件头信息条目的数量是否一致;
第二提示单元,用于在所述第二判断单元判断单元判断交换的数据条目的数量与读取的XML文件头信息条目的数量不一致时抛弃本次的交换过程,并提示用户有错误发生。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101694705A CN101478730B (zh) | 2007-11-12 | 2008-10-21 | 数据交换方法、系统及设备 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710124502 | 2007-11-12 | ||
CN200710124502.5 | 2007-11-12 | ||
CN2008101694705A CN101478730B (zh) | 2007-11-12 | 2008-10-21 | 数据交换方法、系统及设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110128825.8A Division CN102170410B (zh) | 2007-11-12 | 2008-10-21 | 数据交换方法、系统及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101478730A CN101478730A (zh) | 2009-07-08 |
CN101478730B true CN101478730B (zh) | 2011-05-18 |
Family
ID=40839350
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101694705A Active CN101478730B (zh) | 2007-11-12 | 2008-10-21 | 数据交换方法、系统及设备 |
CN201110128825.8A Active CN102170410B (zh) | 2007-11-12 | 2008-10-21 | 数据交换方法、系统及设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110128825.8A Active CN102170410B (zh) | 2007-11-12 | 2008-10-21 | 数据交换方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN101478730B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101945156B (zh) * | 2010-09-01 | 2014-04-16 | 惠州Tcl移动通信有限公司 | 一种移动终端数据信息的备份方法及装置 |
CN102073693A (zh) * | 2010-12-28 | 2011-05-25 | 广州杰赛科技股份有限公司 | 基于xml的数据通讯方法及系统 |
CN103294697B (zh) * | 2012-02-24 | 2018-06-19 | 腾讯科技(北京)有限公司 | 一种数据自适应解析方法及装置 |
CN103970762A (zh) * | 2013-01-29 | 2014-08-06 | 三星电子(中国)研发中心 | 在智能设备之间交换用户个性化数据的方法 |
CN103390056A (zh) * | 2013-07-26 | 2013-11-13 | 国家电网公司 | 一种文件传输方法及系统 |
CN103699633A (zh) * | 2013-12-23 | 2014-04-02 | Tcl集团股份有限公司 | 一种利用xml实现通用化数据交换的方法和系统 |
CN106020863A (zh) * | 2016-05-06 | 2016-10-12 | 福建创意嘉和软件有限公司 | 一种脚本附件调用方法及装置 |
CN106339362B (zh) * | 2016-08-31 | 2019-09-24 | 同方鼎欣科技股份有限公司 | 一种档案信息包大文件封装方法与客户端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1148678C (zh) * | 2000-05-23 | 2004-05-05 | 黎明网络有限公司 | Xml数据信息的交换方法及装置 |
CN1211746C (zh) * | 2002-06-26 | 2005-07-20 | 联想(北京)有限公司 | 嵌入式系统与外部数据库进行数据交换的方法 |
-
2008
- 2008-10-21 CN CN2008101694705A patent/CN101478730B/zh active Active
- 2008-10-21 CN CN201110128825.8A patent/CN102170410B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102170410A (zh) | 2011-08-31 |
CN102170410B (zh) | 2014-01-22 |
CN101478730A (zh) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101478730B (zh) | 数据交换方法、系统及设备 | |
JP4213667B2 (ja) | マルチメディアメッセージをアーカイブする方法 | |
CN101917520B (zh) | 移动终端数据的转换/备份方法、设备和系统 | |
JP5743422B2 (ja) | ファイルタイプおよび/またはファイルフォーマットの変換を伴うmmsメッセージの伝送方法、加入者端末装置 | |
CN1643877B (zh) | 提供多媒体消息给不兼容终端的方法、设备和系统 | |
JP5006864B2 (ja) | 移動無線ネットワークにおけるデータ伝送のための方法および移動通信装置 | |
KR101291324B1 (ko) | 확장된 메시징 플랫폼 | |
US20060078064A1 (en) | Method and radio communication device for the transmission-efficent editing of multimedia news | |
CN100433867C (zh) | 一种防止移动终端中个人数据丢失的方法及装置 | |
CN100349474C (zh) | 一种多媒体消息业务中推送通知的处理方法 | |
CN100342702C (zh) | 电子信息传输方法 | |
CN102204193B (zh) | 通信装置 | |
CN101193337A (zh) | 彩信编码装置 | |
CN1802841B (zh) | 在各种类型的终端之间同步联系人数据的终端和服务器 | |
US20070011244A1 (en) | Arrangement for mobile communications and wireless publishing | |
KR100540328B1 (ko) | 이동통신 단말기용 멀티미디어 메시지의 개별 콘텐츠 관리방법 | |
CN101193338A (zh) | 彩信编码和传输系统 | |
CN101278531B (zh) | 异步消息的接收通知 | |
CN100518231C (zh) | 一种利用多媒体短信接收传真的方法 | |
CN101651852A (zh) | 用短信发邮件和对用短信发的邮件进行回复的系统及方法 | |
CN101304554A (zh) | 一种彩信业务系统及其彩信跟踪中心 | |
US20030096598A1 (en) | Method for transmitting data | |
Zhang et al. | A novel method for the short message or multimedia message synchronization | |
CN101365156A (zh) | 获取用户联系人信息的方法和系统 | |
EP2063589A1 (en) | Method and apparatus for sending message delivery reports |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |