[Rt-commit] r3630 - in XML-WBXML-SyncML: . lib lib/XML
lib/XML/WBXML t t/test-docs
glasser at bestpractical.com
glasser at bestpractical.com
Wed Aug 10 18:28:12 EDT 2005
Author: glasser
Date: Wed Aug 10 18:28:10 2005
New Revision: 3630
Added:
XML-WBXML-SyncML/Changes
XML-WBXML-SyncML/MANIFEST
XML-WBXML-SyncML/MANIFEST.SKIP (contents, props changed)
XML-WBXML-SyncML/Makefile.PL
XML-WBXML-SyncML/README
XML-WBXML-SyncML/lib/
XML-WBXML-SyncML/lib/XML/
XML-WBXML-SyncML/lib/XML/WBXML/
XML-WBXML-SyncML/lib/XML/WBXML/SyncML.pm
XML-WBXML-SyncML/t/
XML-WBXML-SyncML/t/00.load.t
XML-WBXML-SyncML/t/01.convert.t
XML-WBXML-SyncML/t/pod-coverage.t
XML-WBXML-SyncML/t/pod.t
XML-WBXML-SyncML/t/test-docs/
XML-WBXML-SyncML/t/test-docs/my-001.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-002.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-005.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-006.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-007.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-008.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-009.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-010.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-012.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-013.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/my-014.wbxml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-001.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-002.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-005.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-006.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-007.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-008.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-009.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-010.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-012.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-013.xml (contents, props changed)
XML-WBXML-SyncML/t/test-docs/syncml-014.xml (contents, props changed)
Log:
XML::WBXML::SyncML
Added: XML-WBXML-SyncML/Changes
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/Changes Wed Aug 10 18:28:10 2005
@@ -0,0 +1,5 @@
+Revision history for XML-WBXML-SyncML
+
+0.01 Wed Aug 10 16:48:48 2005
+ Initial release.
+
Added: XML-WBXML-SyncML/MANIFEST
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/MANIFEST Wed Aug 10 18:28:10 2005
@@ -0,0 +1,41 @@
+.cvsignore
+Changes
+inc/Module/Install.pm
+inc/Module/Install/Base.pm
+inc/Module/Install/Can.pm
+inc/Module/Install/Fetch.pm
+inc/Module/Install/Makefile.pm
+inc/Module/Install/Metadata.pm
+inc/Module/Install/Win32.pm
+inc/Module/Install/WriteAll.pm
+lib/XML/WBXML/SyncML.pm
+Makefile.PL
+MANIFEST
+META.yml # Will be created by "make dist"
+README
+t/00.load.t
+t/01.convert.t
+t/pod-coverage.t
+t/pod.t
+t/test-docs/my-001.wbxml
+t/test-docs/my-002.wbxml
+t/test-docs/my-005.wbxml
+t/test-docs/my-006.wbxml
+t/test-docs/my-007.wbxml
+t/test-docs/my-008.wbxml
+t/test-docs/my-009.wbxml
+t/test-docs/my-010.wbxml
+t/test-docs/my-012.wbxml
+t/test-docs/my-013.wbxml
+t/test-docs/my-014.wbxml
+t/test-docs/syncml-001.xml
+t/test-docs/syncml-002.xml
+t/test-docs/syncml-005.xml
+t/test-docs/syncml-006.xml
+t/test-docs/syncml-007.xml
+t/test-docs/syncml-008.xml
+t/test-docs/syncml-009.xml
+t/test-docs/syncml-010.xml
+t/test-docs/syncml-012.xml
+t/test-docs/syncml-013.xml
+t/test-docs/syncml-014.xml
Added: XML-WBXML-SyncML/MANIFEST.SKIP
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/MANIFEST.SKIP Wed Aug 10 18:28:10 2005
@@ -0,0 +1,15 @@
+\bRCS\b
+\bCVS\b
+,v$
+\B\.svn\b
+^MANIFEST\.
+^Makefile$
+^blib/
+^MakeMaker-\d
+~$
+\.old$
+^#.*#$
+^\.#
+\bcover_db\b
+\.swp$
+\.swo$
Added: XML-WBXML-SyncML/Makefile.PL
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/Makefile.PL Wed Aug 10 18:28:10 2005
@@ -0,0 +1,15 @@
+use inc::Module::Install;
+
+name ('XML-WBXML-SyncML');
+author ('David Glasser <glasser at bestpractical.com>');
+version_from ('lib/XML/WBXML/SyncML.pm');
+abstract_from('lib/XML/WBXML/SyncML.pm');
+license('perl');
+build_requires('Test::More');
+build_requires('Test::XML');
+requires('XML::DOM');
+requires('XML::SAX::Writer');
+requires('WAP::wbxml');
+requires('WAP::SAXDriver::wbxml');
+
+&WriteAll;
Added: XML-WBXML-SyncML/README
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/README Wed Aug 10 18:28:10 2005
@@ -0,0 +1,25 @@
+XML-WBXML-SyncML version 0.0.1
+
+Simple wrapper around Francois Perrad's wbxml modules to allow
+conversion of WBXML and XML.
+
+
+INSTALLATION
+
+To install this module, run the following commands:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+
+
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2005, Best Practical Solutions LLC.
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
Added: XML-WBXML-SyncML/lib/XML/WBXML/SyncML.pm
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/lib/XML/WBXML/SyncML.pm Wed Aug 10 18:28:10 2005
@@ -0,0 +1,207 @@
+package XML::WBXML::SyncML;
+
+our $VERSION = '0.01';
+
+use warnings;
+use strict;
+use Carp;
+
+use XML::DOM;
+use XML::SAX::Writer;
+
+use WAP::wbxml;
+use WAP::SAXDriver::wbxml;
+
+
+=head1 NAME
+
+XML::WBXML::SyncML - Convert SyncML messages between XML and WBXML
+
+
+=head1 SYNOPSIS
+
+ use XML::WBXML::SyncML;
+
+ $wbxml = XML::WBXML::SyncML::xml_to_wbxml($xml);
+ $xml = XML::WBXML::SyncML::wbxml_to_xml($wbxml);
+
+=head1 DESCRIPTION
+
+This module provides two functions to convert SyncML messages between the XML
+and the Wireless Binary XML (WBXML) formats. It is implemented as a wrapper around
+Francois Perrad's L<WAP::wbxml> and L<WAP::SAXDriver::wbxml> modules.
+
+=head1 FUNCTIONS
+
+=cut
+
+my $syncml_rules_for_w2x =
+bless( {'App' => {'-//SYNCML//DTD DevInf 1.0//EN' => bless( {'TAG' => {'33' => 'Tx','32' => 'SyncType','21' => 'Mod','7' => 'DataStore','26' => 'Rx-Pref','17' => 'Man','18' => 'MaxGUIDSize','30' => 'SwV','16' => 'HwV','27' => 'SharedMem','25' => 'Rx','28' => 'Size','14' => 'Ext','20' => 'MaxMem','24' => 'PropName','10' => 'DevInf','31' => 'SyncCap','35' => 'ValEnum','11' => 'DevTyp','22' => 'OEM','13' => 'DSMem','23' => 'ParamName','29' => 'SourceRef','6' => 'CTType','39' => 'Xval','36' => 'VerCT','9' => 'DevID','12' => 'DisplayName','15' => 'FwV','38' => 'Xnam','8' => 'DataType','34' => 'Tx-Pref','37' => 'VerDTD','19' => 'MaxID','5' => 'CTCap'},'systemid' => 'http://www.syncml.org/docs/devinf_v101_20010530.dtd'}, 'App' ),'-//SYNCML//DTD DevInf 1.1//EN' => bless( {'TAG' => {'33' => 'Tx','32' => 'SyncType','21' => 'Mod','7' => 'DataStore','26' => 'Rx-Pref','17' => 'Man','18' => 'MaxGUIDSize','30' => 'SwV','16' => 'HwV','27' => 'SharedMem','25' => 'Rx','28' => 'Size','40' => 'UTC','14' => 'Ext','20' => 'MaxMem','24' => 'PropName','10' => 'DevInf','31' => 'SyncCap','35' => 'ValEnum','11' => 'DevTyp','42' => 'SupportLargeObjs','22' => 'OEM','13' => 'DSMem','23' => 'ParamName','29' => 'SourceRef','6' => 'CTType','39' => 'Xval','36' => 'VerCT','9' => 'DevID','41' => 'SupportNumberOfChanges','12' => 'DisplayName','15' => 'FwV','38' => 'Xnam','8' => 'DataType','34' => 'Tx-Pref','37' => 'VerDTD','19' => 'MaxID','5' => 'CTCap'},'systemid' => 'http://www.openmobilealliance.org/tech/DTD/OMA-SyncML-DevInfo-DTD-V1_1_2-20030505-D.dtd'}, 'App' ),'-//SYNCML//DTD SyncML 1.0//EN' => bless( {'TAG' => {'274' => 'Size','33' => 'RespURI','32' => 'Replace','276' => 'Version','21' => 'Lang','7' => 'Archive','26' => 'Meta','17' => 'Exec','18' => 'Final','30' => 'NoResults','264' => 'FreeID','16' => 'Delete','44' => 'SyncHdr','27' => 'MsgID','25' => 'MapItem','272' => 'NextNonce','28' => 'MsgRef','40' => 'SourceRef','273' => 'SharedMem','268' => 'MaxMsgSize','14' => 'Cred','20' => 'Item','49' => 'VerDTD','24' => 'Map','10' => 'Cmd','31' => 'Put','271' => 'Next','35' => 'Search','11' => 'CmdID','267' => 'Mark','266' => 'Last','263' => 'Format','262' => 'EMI','269' => 'Mem','42' => 'Sync','22' => 'LocName','46' => 'Target','275' => 'Type','13' => 'Copy','23' => 'LocURI','29' => 'NoResp','6' => 'Alert','50' => 'VerProto','261' => 'Anchor','39' => 'Source','36' => 'Sequence','9' => 'Chal','41' => 'Status','12' => 'CmdRef','47' => 'TargetRef','15' => 'Data','38' => 'SftDel','8' => 'Atomic','265' => 'FreeMem','34' => 'Results','45' => 'SyncML','37' => 'SessionID','43' => 'SyncBody','19' => 'Get','270' => 'MetInf','5' => 'Add'},'systemid' => 'http://www.syncml.org/docs/syncml_represent_v101_20010615.dtd'}, 'App' ),'-//SYNCML//DTD SyncML 1.1//EN' => bless( {'TAG' => {'33' => 'RespURI','32' => 'Replace','276' => 'Version','21' => 'Lang','7' => 'Archive','26' => 'Meta','18' => 'Final','264' => 'FreeID','16' => 'Delete','44' => 'SyncHdr','27' => 'MsgID','272' => 'NextNonce','277' => 'MaxObjSize','20' => 'Item','10' => 'Cmd','31' => 'Put','35' => 'Search','11' => 'CmdID','266' => 'Last','263' => 'Format','275' => 'Type','29' => 'NoResp','50' => 'VerProto','261' => 'Anchor','39' => 'Source','41' => 'Status','12' => 'CmdRef','15' => 'Data','52' => 'MoreData','45' => 'SyncML','19' => 'Get','274' => 'Size','17' => 'Exec','30' => 'NoResults','25' => 'MapItem','28' => 'MsgRef','40' => 'SourceRef','273' => 'SharedMem','268' => 'MaxMsgSize','14' => 'Cred','49' => 'VerDTD','24' => 'Map','271' => 'Next','267' => 'Mark','262' => 'EMI','22' => 'LocName','42' => 'Sync','269' => 'Mem','46' => 'Target','23' => 'LocURI','13' => 'Copy','6' => 'Alert','36' => 'Sequence','9' => 'Chal','51' => 'NumberOfChanges','47' => 'TargetRef','8' => 'Atomic','38' => 'SftDel','34' => 'Results','265' => 'FreeMem','37' => 'SessionID','43' => 'SyncBody','270' => 'MetInf','5' => 'Add'},'systemid' => 'http://www.openmobilealliance.org/tech/DTD/OMA-SyncML-RepPro-DTD-V1_1_2-20030505-D.dtd'}, 'App' )},'PublicIdentifier' => {'4052' => '-//SYNCML//DTD DevInf 1.1//EN','11' => '-//WAPFORUM//DTD PROV 1.0//EN','7' => '-//WAPFORUM//DTD CO 1.0//EN','4050' => '-//SYNCML//DTD DevInf 1.0//EN','17' => '-//OMA//DTD WV-CSP 1.2//EN','2' => '-//WAPFORUM//DTD WML 1.0//EN','4611' => '-//SYNCML//DTD DevInf 1.2//EN','4051' => '-//SYNCML//DTD SyncML 1.1//EN','16' => '-//WIRELESSVILLAGE//DTD CSP 1.1//EN','13' => '-//WAPFORUM//DTD EMN 1.0//EN','6' => '-//WAPFORUM//DTD SL 1.0//EN','4610' => '-//SYNCML//DTD MetaInf 1.2//EN','4609' => '-//SYNCML//DTD SyncML 1.2//EN','9' => '-//WAPFORUM//DTD WML 1.2//EN','12' => '-//WAPFORUM//DTD WTA-WML 1.2//EN','14' => '-//OMA//DTD DRMREL 1.0//EN','15' => '-//WIRELESSVILLAGE//DTD CSP 1.0//EN','8' => '-//WAPFORUM//DTD CHANNEL 1.1//EN','4' => '-//WAPFORUM//DTD WML 1.1//EN','4049' => '-//SYNCML//DTD SyncML 1.0//EN','10' => '-//WAPFORUM//DTD WML 1.3//EN','5' => '-//WAPFORUM//DTD SI 1.0//EN'}}, 'Rules' );
+
+my $syncml_rules_for_x2w =
+bless( {'App' => {'-//SYNCML//DTD DevInf 1.0//EN' => bless( {'variableSubs' => '','TagTokens' => [bless( {'name' => 'CTCap','ext_token' => 5}, 'TagToken' ),bless( {'name' => 'CTType','ext_token' => 6}, 'TagToken' ),bless( {'name' => 'DataStore','ext_token' => 7}, 'TagToken' ),bless( {'name' => 'DataType','ext_token' => 8}, 'TagToken' ),bless( {'name' => 'DevID','ext_token' => 9}, 'TagToken' ),bless( {'name' => 'DevInf','ext_token' => 10}, 'TagToken' ),bless( {'name' => 'DevTyp','ext_token' => 11}, 'TagToken' ),bless( {'name' => 'DisplayName','ext_token' => 12}, 'TagToken' ),bless( {'name' => 'DSMem','ext_token' => 13}, 'TagToken' ),bless( {'name' => 'Ext','ext_token' => 14}, 'TagToken' ),bless( {'name' => 'FwV','ext_token' => 15}, 'TagToken' ),bless( {'name' => 'HwV','ext_token' => 16}, 'TagToken' ),bless( {'name' => 'Man','ext_token' => 17}, 'TagToken' ),bless( {'name' => 'MaxGUIDSize','ext_token' => 18}, 'TagToken' ),bless( {'name' => 'MaxID','ext_token' => 19}, 'TagToken' ),bless( {'name' => 'MaxMem','ext_token' => 20}, 'TagToken' ),bless( {'name' => 'Mod','ext_token' => 21}, 'TagToken' ),bless( {'name' => 'OEM','ext_token' => 22}, 'TagToken' ),bless( {'name' => 'ParamName','ext_token' => 23}, 'TagToken' ),bless( {'name' => 'PropName','ext_token' => 24}, 'TagToken' ),bless( {'name' => 'Rx','ext_token' => 25}, 'TagToken' ),bless( {'name' => 'Rx-Pref','ext_token' => 26}, 'TagToken' ),bless( {'name' => 'SharedMem','ext_token' => 27}, 'TagToken' ),bless( {'name' => 'Size','ext_token' => 28}, 'TagToken' ),bless( {'name' => 'SourceRef','ext_token' => 29}, 'TagToken' ),bless( {'name' => 'SwV','ext_token' => 30}, 'TagToken' ),bless( {'name' => 'SyncCap','ext_token' => 31}, 'TagToken' ),bless( {'name' => 'SyncType','ext_token' => 32}, 'TagToken' ),bless( {'name' => 'Tx','ext_token' => 33}, 'TagToken' ),bless( {'name' => 'Tx-Pref','ext_token' => 34}, 'TagToken' ),bless( {'name' => 'ValEnum','ext_token' => 35}, 'TagToken' ),bless( {'name' => 'VerCT','ext_token' => 36}, 'TagToken' ),bless( {'name' => 'VerDTD','ext_token' => 37}, 'TagToken' ),bless( {'name' => 'Xnam','ext_token' => 38}, 'TagToken' ),bless( {'name' => 'Xval','ext_token' => 39}, 'TagToken' )],'AttrValueTokens' => [],'publicid' => '-//SYNCML//DTD DevInf 1.0//EN','skipDefault' => '','textualExt' => 'xml','xmlSpace' => 'preserve','tokenisedExt' => 'wbxml','AttrStartTokens' => []}, 'WbRulesApp' ),'-//SYNCML//DTD DevInf 1.1//EN' => bless( {'variableSubs' => '','TagTokens' => [bless( {'name' => 'CTCap','ext_token' => 5}, 'TagToken' ),bless( {'name' => 'CTType','ext_token' => 6}, 'TagToken' ),bless( {'name' => 'DataStore','ext_token' => 7}, 'TagToken' ),bless( {'name' => 'DataType','ext_token' => 8}, 'TagToken' ),bless( {'name' => 'DevID','ext_token' => 9}, 'TagToken' ),bless( {'name' => 'DevInf','ext_token' => 10}, 'TagToken' ),bless( {'name' => 'DevTyp','ext_token' => 11}, 'TagToken' ),bless( {'name' => 'DisplayName','ext_token' => 12}, 'TagToken' ),bless( {'name' => 'DSMem','ext_token' => 13}, 'TagToken' ),bless( {'name' => 'Ext','ext_token' => 14}, 'TagToken' ),bless( {'name' => 'FwV','ext_token' => 15}, 'TagToken' ),bless( {'name' => 'HwV','ext_token' => 16}, 'TagToken' ),bless( {'name' => 'Man','ext_token' => 17}, 'TagToken' ),bless( {'name' => 'MaxGUIDSize','ext_token' => 18}, 'TagToken' ),bless( {'name' => 'MaxID','ext_token' => 19}, 'TagToken' ),bless( {'name' => 'MaxMem','ext_token' => 20}, 'TagToken' ),bless( {'name' => 'Mod','ext_token' => 21}, 'TagToken' ),bless( {'name' => 'OEM','ext_token' => 22}, 'TagToken' ),bless( {'name' => 'ParamName','ext_token' => 23}, 'TagToken' ),bless( {'name' => 'PropName','ext_token' => 24}, 'TagToken' ),bless( {'name' => 'Rx','ext_token' => 25}, 'TagToken' ),bless( {'name' => 'Rx-Pref','ext_token' => 26}, 'TagToken' ),bless( {'name' => 'SharedMem','ext_token' => 27}, 'TagToken' ),bless( {'name' => 'Size','ext_token' => 28}, 'TagToken' ),bless( {'name' => 'SourceRef','ext_token' => 29}, 'TagToken' ),bless( {'name' => 'SwV','ext_token' => 30}, 'TagToken' ),bless( {'name' => 'SyncCap','ext_token' => 31}, 'TagToken' ),bless( {'name' => 'SyncType','ext_token' => 32}, 'TagToken' ),bless( {'name' => 'Tx','ext_token' => 33}, 'TagToken' ),bless( {'name' => 'Tx-Pref','ext_token' => 34}, 'TagToken' ),bless( {'name' => 'ValEnum','ext_token' => 35}, 'TagToken' ),bless( {'name' => 'VerCT','ext_token' => 36}, 'TagToken' ),bless( {'name' => 'VerDTD','ext_token' => 37}, 'TagToken' ),bless( {'name' => 'Xnam','ext_token' => 38}, 'TagToken' ),bless( {'name' => 'Xval','ext_token' => 39}, 'TagToken' ),bless( {'name' => 'UTC','ext_token' => 40}, 'TagToken' ),bless( {'name' => 'SupportNumberOfChanges','ext_token' => 41}, 'TagToken' ),bless( {'name' => 'SupportLargeObjs','ext_token' => 42}, 'TagToken' )],'AttrValueTokens' => [],'publicid' => '-//SYNCML//DTD DevInf 1.1//EN','skipDefault' => '','textualExt' => 'xml','xmlSpace' => 'preserve','tokenisedExt' => 'wbxml','AttrStartTokens' => []}, 'WbRulesApp' ),'-//SYNCML//DTD SyncML 1.0//EN' => bless( {'variableSubs' => '','TagTokens' => [bless( {'name' => 'Add','ext_token' => 5}, 'TagToken' ),bless( {'name' => 'Alert','ext_token' => 6}, 'TagToken' ),bless( {'name' => 'Archive','ext_token' => 7}, 'TagToken' ),bless( {'name' => 'Atomic','ext_token' => 8}, 'TagToken' ),bless( {'name' => 'Chal','ext_token' => 9}, 'TagToken' ),bless( {'name' => 'Cmd','ext_token' => 10}, 'TagToken' ),bless( {'name' => 'CmdID','ext_token' => 11}, 'TagToken' ),bless( {'name' => 'CmdRef','ext_token' => 12}, 'TagToken' ),bless( {'name' => 'Copy','ext_token' => 13}, 'TagToken' ),bless( {'name' => 'Cred','ext_token' => 14}, 'TagToken' ),bless( {'name' => 'Data','ext_token' => 15}, 'TagToken' ),bless( {'name' => 'Delete','ext_token' => 16}, 'TagToken' ),bless( {'name' => 'Exec','ext_token' => 17}, 'TagToken' ),bless( {'name' => 'Final','ext_token' => 18}, 'TagToken' ),bless( {'name' => 'Get','ext_token' => 19}, 'TagToken' ),bless( {'name' => 'Item','ext_token' => 20}, 'TagToken' ),bless( {'name' => 'Lang','ext_token' => 21}, 'TagToken' ),bless( {'name' => 'LocName','ext_token' => 22}, 'TagToken' ),bless( {'name' => 'LocURI','ext_token' => 23}, 'TagToken' ),bless( {'name' => 'Map','ext_token' => 24}, 'TagToken' ),bless( {'name' => 'MapItem','ext_token' => 25}, 'TagToken' ),bless( {'name' => 'Meta','ext_token' => 26}, 'TagToken' ),bless( {'name' => 'MsgID','ext_token' => 27}, 'TagToken' ),bless( {'name' => 'MsgRef','ext_token' => 28}, 'TagToken' ),bless( {'name' => 'NoResp','ext_token' => 29}, 'TagToken' ),bless( {'name' => 'NoResults','ext_token' => 30}, 'TagToken' ),bless( {'name' => 'Put','ext_token' => 31}, 'TagToken' ),bless( {'name' => 'Replace','ext_token' => 32}, 'TagToken' ),bless( {'name' => 'RespURI','ext_token' => 33}, 'TagToken' ),bless( {'name' => 'Results','ext_token' => 34}, 'TagToken' ),bless( {'name' => 'Search','ext_token' => 35}, 'TagToken' ),bless( {'name' => 'Sequence','ext_token' => 36}, 'TagToken' ),bless( {'name' => 'SessionID','ext_token' => 37}, 'TagToken' ),bless( {'name' => 'SftDel','ext_token' => 38}, 'TagToken' ),bless( {'name' => 'Source','ext_token' => 39}, 'TagToken' ),bless( {'name' => 'SourceRef','ext_token' => 40}, 'TagToken' ),bless( {'name' => 'Status','ext_token' => 41}, 'TagToken' ),bless( {'name' => 'Sync','ext_token' => 42}, 'TagToken' ),bless( {'name' => 'SyncBody','ext_token' => 43}, 'TagToken' ),bless( {'name' => 'SyncHdr','ext_token' => 44}, 'TagToken' ),bless( {'name' => 'SyncML','ext_token' => 45}, 'TagToken' ),bless( {'name' => 'Target','ext_token' => 46}, 'TagToken' ),bless( {'name' => 'TargetRef','ext_token' => 47}, 'TagToken' ),bless( {'name' => 'VerDTD','ext_token' => 49}, 'TagToken' ),bless( {'name' => 'VerProto','ext_token' => 50}, 'TagToken' ),bless( {'name' => 'Anchor','ext_token' => 261}, 'TagToken' ),bless( {'name' => 'EMI','ext_token' => 262}, 'TagToken' ),bless( {'name' => 'Format','ext_token' => 263}, 'TagToken' ),bless( {'name' => 'FreeID','ext_token' => 264}, 'TagToken' ),bless( {'name' => 'FreeMem','ext_token' => 265}, 'TagToken' ),bless( {'name' => 'Last','ext_token' => 266}, 'TagToken' ),bless( {'name' => 'Mark','ext_token' => 267}, 'TagToken' ),bless( {'name' => 'MaxMsgSize','ext_token' => 268}, 'TagToken' ),bless( {'name' => 'Mem','ext_token' => 269}, 'TagToken' ),bless( {'name' => 'MetInf','ext_token' => 270}, 'TagToken' ),bless( {'name' => 'Next','ext_token' => 271}, 'TagToken' ),bless( {'name' => 'NextNonce','ext_token' => 272}, 'TagToken' ),bless( {'name' => 'SharedMem','ext_token' => 273}, 'TagToken' ),bless( {'name' => 'Size','ext_token' => 274}, 'TagToken' ),bless( {'name' => 'Type','ext_token' => 275}, 'TagToken' ),bless( {'name' => 'Version','ext_token' => 276}, 'TagToken' )],'AttrValueTokens' => [],'publicid' => '-//SYNCML//DTD SyncML 1.0//EN','skipDefault' => '','textualExt' => 'xml','xmlSpace' => 'preserve','tokenisedExt' => 'wbxml','AttrStartTokens' => []}, 'WbRulesApp' ),'-//SYNCML//DTD SyncML 1.1//EN' => bless( {'variableSubs' => '','TagTokens' => [bless( {'name' => 'Add','ext_token' => 5}, 'TagToken' ),bless( {'name' => 'Alert','ext_token' => 6}, 'TagToken' ),bless( {'name' => 'Archive','ext_token' => 7}, 'TagToken' ),bless( {'name' => 'Atomic','ext_token' => 8}, 'TagToken' ),bless( {'name' => 'Chal','ext_token' => 9}, 'TagToken' ),bless( {'name' => 'Cmd','ext_token' => 10}, 'TagToken' ),bless( {'name' => 'CmdID','ext_token' => 11}, 'TagToken' ),bless( {'name' => 'CmdRef','ext_token' => 12}, 'TagToken' ),bless( {'name' => 'Copy','ext_token' => 13}, 'TagToken' ),bless( {'name' => 'Cred','ext_token' => 14}, 'TagToken' ),bless( {'name' => 'Data','ext_token' => 15}, 'TagToken' ),bless( {'name' => 'Delete','ext_token' => 16}, 'TagToken' ),bless( {'name' => 'Exec','ext_token' => 17}, 'TagToken' ),bless( {'name' => 'Final','ext_token' => 18}, 'TagToken' ),bless( {'name' => 'Get','ext_token' => 19}, 'TagToken' ),bless( {'name' => 'Item','ext_token' => 20}, 'TagToken' ),bless( {'name' => 'Lang','ext_token' => 21}, 'TagToken' ),bless( {'name' => 'LocName','ext_token' => 22}, 'TagToken' ),bless( {'name' => 'LocURI','ext_token' => 23}, 'TagToken' ),bless( {'name' => 'Map','ext_token' => 24}, 'TagToken' ),bless( {'name' => 'MapItem','ext_token' => 25}, 'TagToken' ),bless( {'name' => 'Meta','ext_token' => 26}, 'TagToken' ),bless( {'name' => 'MsgID','ext_token' => 27}, 'TagToken' ),bless( {'name' => 'MsgRef','ext_token' => 28}, 'TagToken' ),bless( {'name' => 'NoResp','ext_token' => 29}, 'TagToken' ),bless( {'name' => 'NoResults','ext_token' => 30}, 'TagToken' ),bless( {'name' => 'Put','ext_token' => 31}, 'TagToken' ),bless( {'name' => 'Replace','ext_token' => 32}, 'TagToken' ),bless( {'name' => 'RespURI','ext_token' => 33}, 'TagToken' ),bless( {'name' => 'Results','ext_token' => 34}, 'TagToken' ),bless( {'name' => 'Search','ext_token' => 35}, 'TagToken' ),bless( {'name' => 'Sequence','ext_token' => 36}, 'TagToken' ),bless( {'name' => 'SessionID','ext_token' => 37}, 'TagToken' ),bless( {'name' => 'SftDel','ext_token' => 38}, 'TagToken' ),bless( {'name' => 'Source','ext_token' => 39}, 'TagToken' ),bless( {'name' => 'SourceRef','ext_token' => 40}, 'TagToken' ),bless( {'name' => 'Status','ext_token' => 41}, 'TagToken' ),bless( {'name' => 'Sync','ext_token' => 42}, 'TagToken' ),bless( {'name' => 'SyncBody','ext_token' => 43}, 'TagToken' ),bless( {'name' => 'SyncHdr','ext_token' => 44}, 'TagToken' ),bless( {'name' => 'SyncML','ext_token' => 45}, 'TagToken' ),bless( {'name' => 'Target','ext_token' => 46}, 'TagToken' ),bless( {'name' => 'TargetRef','ext_token' => 47}, 'TagToken' ),bless( {'name' => 'VerDTD','ext_token' => 49}, 'TagToken' ),bless( {'name' => 'VerProto','ext_token' => 50}, 'TagToken' ),bless( {'name' => 'NumberOfChanges','ext_token' => 51}, 'TagToken' ),bless( {'name' => 'MoreData','ext_token' => 52}, 'TagToken' ),bless( {'name' => 'Anchor','ext_token' => 261}, 'TagToken' ),bless( {'name' => 'EMI','ext_token' => 262}, 'TagToken' ),bless( {'name' => 'Format','ext_token' => 263}, 'TagToken' ),bless( {'name' => 'FreeID','ext_token' => 264}, 'TagToken' ),bless( {'name' => 'FreeMem','ext_token' => 265}, 'TagToken' ),bless( {'name' => 'Last','ext_token' => 266}, 'TagToken' ),bless( {'name' => 'Mark','ext_token' => 267}, 'TagToken' ),bless( {'name' => 'MaxMsgSize','ext_token' => 268}, 'TagToken' ),bless( {'name' => 'MaxObjSize','ext_token' => 277}, 'TagToken' ),bless( {'name' => 'Mem','ext_token' => 269}, 'TagToken' ),bless( {'name' => 'MetInf','ext_token' => 270}, 'TagToken' ),bless( {'name' => 'Next','ext_token' => 271}, 'TagToken' ),bless( {'name' => 'NextNonce','ext_token' => 272}, 'TagToken' ),bless( {'name' => 'SharedMem','ext_token' => 273}, 'TagToken' ),bless( {'name' => 'Size','ext_token' => 274}, 'TagToken' ),bless( {'name' => 'Type','ext_token' => 275}, 'TagToken' ),bless( {'name' => 'Version','ext_token' => 276}, 'TagToken' )],'AttrValueTokens' => [],'publicid' => '-//SYNCML//DTD SyncML 1.1//EN','skipDefault' => '','textualExt' => 'xml','xmlSpace' => 'preserve','tokenisedExt' => 'wbxml','AttrStartTokens' => []}, 'WbRulesApp' )},'version' => 3,'DefaultApp' => bless( {'variableSubs' => '','TagTokens' => [],'AttrValueTokens' => [],'publicid' => 'DEFAULT','skipDefault' => '','textualExt' => 'xml','xmlSpace' => 'preserve','tokenisedExt' => 'wbxml','AttrStartTokens' => []}, 'WbRulesApp' ),'PublicIdentifiers' => {'-//SYNCML//DTD SyncML 1.1//EN' => 4051,'-//OMA//DTD WV-CSP 1.2//EN' => 17,'-//WAPFORUM//DTD WML 1.0//EN' => 2,'-//WAPFORUM//DTD WML 1.1//EN' => 4,'-//SYNCML//DTD DevInf 1.1//EN' => 4052,'-//WAPFORUM//DTD SL 1.0//EN' => 6,'-//WAPFORUM//DTD WML 1.2//EN' => 9,'-//SYNCML//DTD MetaInf 1.2//EN' => 4610,'-//WAPFORUM//DTD CHANNEL 1.1//EN' => 8,'-//SYNCML//DTD DevInf 1.0//EN' => 4050,'-//WAPFORUM//DTD PROV 1.0//EN' => 11,'-//WIRELESSVILLAGE//DTD CSP 1.1//EN' => 16,'-//WAPFORUM//DTD CO 1.0//EN' => 7,'-//WAPFORUM//DTD WML 1.3//EN' => 10,'-//WAPFORUM//DTD WTA-WML 1.2//EN' => 12,'-//WAPFORUM//DTD EMN 1.0//EN' => 13,'-//OMA//DTD DRMREL 1.0//EN' => 14,'-//SYNCML//DTD DevInf 1.2//EN' => 4611,'-//WIRELESSVILLAGE//DTD CSP 1.0//EN' => 15,'-//WAPFORUM//DTD SI 1.0//EN' => 5,'-//SYNCML//DTD SyncML 1.0//EN' => 4049,'-//SYNCML//DTD SyncML 1.2//EN' => 4609}}, 'WbRules' );
+
+=head2 wbxml_to_xml $wbxml
+
+Converts the SyncML WBXML message C<$wbxml> to XML.
+
+=cut
+
+sub wbxml_to_xml {
+ my $in_wbxml = shift;
+
+ my $consumer = XML::SAX::Writer::StringConsumer->new;
+ my $handler = XML::SAX::Writer->new(Writer => 'XML::WBXML::SyncML::WriterXML', Output => $consumer);
+ my $error = XML::WBXML::SyncML::ErrorHandler->new;
+
+ $WAP::SAXDriver::wbxml::rules = $syncml_rules_for_w2x;
+ my $parser = WAP::SAXDriver::wbxml->new(Handler => $handler, ErrorHandler => $error);
+
+ my $doc = $parser->parse( Source => { String => $in_wbxml } );
+
+ return ${ $consumer->finalize };
+}
+
+
+=head2 xml_to_wbxml $xml
+
+Converts the SyncML XML message C<$xml> to WBXML.
+
+=cut
+
+sub xml_to_wbxml {
+ my $in_xml = shift;
+
+ my $parser = XML::DOM::Parser->new;
+ my $doc_xml = $parser->parse($in_xml);
+
+ my $wbxml = WbXml->new($syncml_rules_for_x2w, '-//SYNCML//DTD SyncML 1.1//EN');
+ my $out_wbxml = $wbxml->compile($doc_xml, 'UTF-8');
+
+ return $out_wbxml;
+}
+
+
+
+=head1 CONFIGURATION AND ENVIRONMENT
+
+XML::WBXML::SyncML requires no configuration files or environment variables.
+
+
+=head1 DEPENDENCIES
+
+L<WAP::wbxml>, L<WAP::SAXDriver::wbxml>, L<XML::DOM>, and L<XML::SAX::Writer>.
+
+
+=head1 INCOMPATIBILITIES
+
+None reported.
+
+
+=head1 BUGS AND LIMITATIONS
+
+
+No bugs have been reported.
+
+Please report any bugs or feature requests to
+C<bug-xml-wbxml-syncml at rt.cpan.org>, or through the web interface at
+L<http://rt.cpan.org>.
+
+
+=head1 AUTHOR
+
+David Glasser C<< <glasser at bestpractical.com> >>
+
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2005, Best Practical Solutions, LLC. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+
+=head1 DISCLAIMER OF WARRANTY
+
+BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
+YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR, OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+=cut
+
+package XML::WBXML::SyncML::ErrorHandler;
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ return bless {}, $class;
+}
+
+sub fatal_error {
+ my $self = shift;
+ my ($hash) = @_;
+ die __PACKAGE__,": Fatal error\n\tat position $hash->{BytePosition}.\n";
+}
+
+sub error {
+ my $self = shift;
+ my ($hash) = @_;
+ warn __PACKAGE__,": Error: $hash->{Message}\n\tat position $hash->{BytePosition}\n";
+}
+
+sub warning {
+ my $self = shift;
+ my ($hash) = @_;
+ warn __PACKAGE__,": Warning: $hash->{Message}\n\tat position $hash->{BytePosition}\n";
+}
+
+
+package XML::WBXML::SyncML::WriterXML;
+
+use base qw(XML::SAX::Writer::XML);
+
+sub characters {
+ my $self = shift;
+ my $data = shift;
+ $self->_output_element;
+
+ my $char = $data->{Data};
+ my $first = ord $char;
+ if ($first <= 03) {
+ # WBXML inner
+ my $doc = XML::WBXML::SyncML::wbxml_to_xml($char);
+
+ $char = '<![CDATA[' . $doc . ']]>';
+ } else {
+ if ($self->{InCDATA}) {
+ # we must scan for ]]> in the CDATA and escape it if it
+ # is present by close--opening
+ # we need to have buffer text in front of this...
+ $char = join ']]>]]<<![CDATA[', split ']]>', $char;
+ }
+ else {
+ $char = $self->escape($char);
+ }
+ }
+ $char = $self->{Encoder}->convert($char);
+ $self->{Consumer}->output($char);
+}
+
+1;
Added: XML-WBXML-SyncML/t/00.load.t
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/00.load.t Wed Aug 10 18:28:10 2005
@@ -0,0 +1,7 @@
+use Test::More tests => 1;
+
+BEGIN {
+use_ok( 'XML::WBXML::SyncML' );
+}
+
+diag( "Testing XML::WBXML::SyncML $XML::WBXML::SyncML::VERSION" );
Added: XML-WBXML-SyncML/t/01.convert.t
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/01.convert.t Wed Aug 10 18:28:10 2005
@@ -0,0 +1,40 @@
+use Test::More tests => 72;
+
+BEGIN { use_ok 'XML::WBXML::SyncML' }
+BEGIN { use_ok 'Test::XML' }
+
+ok( defined &XML::WBXML::SyncML::xml_to_wbxml, "x2w defined in package" );
+ok( defined &XML::WBXML::SyncML::wbxml_to_xml, "w2x defined in package" );
+
+# no exports
+ok( (not defined &xml_to_wbxml), "x2w not exported" );
+ok( (not defined &wbxml_to_xml), "w2x not exported" );
+
+sub slurp {
+ my $filename = "t/test-docs/" . shift;
+ open my $fh, "<", $filename or die "can't open $filename: $!";
+ # think about encodings?
+ my $slurped = do { local $/; <$fh> };
+ return $slurped;
+}
+
+
+for my $test (qw/001 002 005 006 007 008 009 010 012 013 014/) {
+ my $in_xml = slurp("syncml-$test.xml");
+ my $expected_wbxml = slurp("my-$test.wbxml");
+
+ like( $in_xml, qr/^<\?xml/, "input looks like XML" );
+ like( $expected_wbxml, qr/^[\001-\007]/, "expected value looks like WBXML" );
+
+ is( XML::WBXML::SyncML::xml_to_wbxml($in_xml), $expected_wbxml, "x2w converted correctly" );
+}
+
+for my $test (qw/001 002 005 006 007 008 009 010 012 013 014/) {
+ my $in_wbxml = slurp("my-$test.wbxml");
+ my $expected_xml = slurp("syncml-$test.xml");
+
+ like( $in_wbxml, qr/^[\001-\007]/, "input looks like WBXML" );
+ like( $expected_xml, qr/^<\?xml/, "expected value looks like XML" );
+
+ is_xml( XML::WBXML::SyncML::wbxml_to_xml($in_wbxml), $expected_xml, "w2x converted correctly" );
+}
Added: XML-WBXML-SyncML/t/pod-coverage.t
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/pod-coverage.t Wed Aug 10 18:28:10 2005
@@ -0,0 +1,6 @@
+#!perl -T
+
+use Test::More;
+eval "use Test::Pod::Coverage 1.04";
+plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;
+all_pod_coverage_ok();
Added: XML-WBXML-SyncML/t/pod.t
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/pod.t Wed Aug 10 18:28:10 2005
@@ -0,0 +1,6 @@
+#!perl -T
+
+use Test::More;
+eval "use Test::Pod 1.14";
+plan skip_all => "Test::Pod 1.14 required for testing POD" if $@;
+all_pod_files_ok();
Added: XML-WBXML-SyncML/t/test-docs/my-001.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-002.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-005.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-006.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-007.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-008.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-009.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-010.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-012.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-013.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/my-014.wbxml
==============================================================================
Binary file. No diff available.
Added: XML-WBXML-SyncML/t/test-docs/syncml-001.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-001.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>2</MsgID>
+ <Target><LocURI>IMEI:493005100592800</LocURI></Target>
+ <Source><LocURI>http://www.syncml.org/sync-server</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
+ <TargetRef>http://www.syncml.org/sync-server</TargetRef>
+ <SourceRef>IMEI:493005100592800</SourceRef>
+ <Data>101</Data>
+ </Status>
+ </SyncBody>
+</SyncML>
Added: XML-WBXML-SyncML/t/test-docs/syncml-002.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-002.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>3</MsgID>
+ <Target><LocURI>http://www.syncml.org/sync-server</LocURI></Target>
+ <Source><LocURI>IMEI:493005100592800</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Alert>
+ <CmdID>1</CmdID>
+ <Data>221</Data>
+ <Item>
+ <Target><LocURI>http://www.syncml.org/sync-server</LocURI></Target>
+ <Source><LocURI>IMEI:493005100592800</LocURI></Source>
+ </Item>
+ </Alert>
+ </SyncBody>
+</SyncML>
Added: XML-WBXML-SyncML/t/test-docs/syncml-005.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-005.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>2</MsgID>
+ <Target><LocURI>http://www.syncml.org/sync-server</LocURI></Target>
+ <Source><LocURI>IMEI:493005100592800</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
+ <TargetRef>IMEI:493005100592800</TargetRef>
+ <SourceRef> http://www.syncml.org/sync-server </SourceRef>
+ <Data>212</Data> <!--Statuscode for OK, authenticated for session-->
+ </Status>
+ <Status>
+ <CmdID>2</CmdID>
+ <MsgRef>1</MsgRef><CmdRef>5</CmdRef><Cmd>Alert</Cmd>
+ <TargetRef>./dev-contacts</TargetRef>
+ <SourceRef>./contacts/james_bond</SourceRef>
+ <Data>200</Data> <!--Statuscode for Success-->
+ <Item>
+ <Data>
+ <Anchor xmlns='syncml:metinf'><Next>200005022T093223Z </Next></Anchor>
+ </Data>
+ </Item>
+ </Status>
+ <Sync>
+ <CmdID>3</CmdID>
+ <Target><LocURI>./contacts/james_bond</LocURI></Target>
+ <Source><LocURI>./dev-contacts</LocURI></Source>
+ <Meta>
+ <Mem xmlns='syncml:metinf'>
+ <FreeMem>8100</FreeMem>
+ <!--Free memory (bytes) in Calendar database on a device -->
+ <FreeID>81</FreeID>
+ <!--Number of free records in Calendar database-->
+ </Mem>
+ </Meta>
+ <Replace>
+ <CmdID>4</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Source><LocURI>1012</LocURI></Source>
+ <Data><!--The vCard data would be placed here.--></Data>
+ </Item>
+ </Replace>
+ </Sync>
+ <Final/>
+ </SyncBody>
+</SyncML>
Added: XML-WBXML-SyncML/t/test-docs/syncml-006.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-006.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>2</MsgID>
+ <Target><LocURI>IMEI:493005100592800</LocURI></Target>
+ <Source><LocURI>http://www.syncml.org/sync-server</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
+ <TargetRef>http://www.syncml.org/sync-server</TargetRef>
+ <SourceRef>IMEI:493005100592800</SourceRef>
+ <Data>200</Data>
+ </Status>
+ <Status><!--This is a status for the client modifications to the server.-->
+ <CmdID>2</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>3</CmdRef><Cmd>Sync</Cmd>
+ <TargetRef>./contacts/james_bond</TargetRef>
+ <SourceRef>./dev-contacts</SourceRef>
+ <Data>200</Data> <!--Statuscode for Success-->
+ </Status>
+ <Status>
+ <CmdID>3</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>4</CmdRef><Cmd>Replace</Cmd>
+ <SourceRef>1012</SourceRef>
+ <Data>200</Data> <!--Statuscode for Success-->
+ </Status>
+ <Sync>
+ <CmdID>4</CmdID>
+ <Target><LocURI>./dev-contacts</LocURI></Target>
+ <Source><LocURI>./contacts/james_bond</LocURI></Source>
+ <Replace>
+ <CmdID>5</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Target><LocURI>1023</LocURI></Target>
+ <Data><!--The vCard data would be placed here.--></Data>
+ </Item>
+ </Replace>
+ <Add>
+ <CmdID>6</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Source><LocURI>10536681</LocURI></Source>
+ <Data><!--The vCard data would be placed here.--></Data>
+ </Item>
+ </Add>
+ </Sync>
+ <Final/>
+ </SyncBody>
+</SyncML>
\ No newline at end of file
Added: XML-WBXML-SyncML/t/test-docs/syncml-007.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-007.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>3</MsgID>
+ <Target><LocURI>http://www.syncml.org/sync-server</LocURI></Target>
+ <Source><LocURI>IMEI:493005100592800</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
+ <TargetRef>IMEI:493005100592800</TargetRef>
+ <SourceRef> http://www.syncml.org/sync-server </SourceRef>
+ <Data>200</Data>
+ </Status>
+ <Status>
+ <CmdID>2</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>4</CmdRef><Cmd>Sync</Cmd>
+ <TargetRef>./dev-contacts</TargetRef>
+ <SourceRef>./contacts/james_bond</SourceRef>
+ <Data>200</Data>
+ </Status>
+ <Status>
+ <CmdID>3</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>5</CmdRef><Cmd>Replace</Cmd>
+ <TargetRef>1023</TargetRef>
+ <Data>200</Data>
+ </Status>
+ <Status>
+ <CmdID>4</CmdID>
+ <MsgRef>2</MsgRef><CmdRef>6</CmdRef><Cmd>Add</Cmd>
+ <SourceRef>10536681</SourceRef>
+ <Data>200</Data>
+ </Status>
+ <Map>
+ <CmdID>5</CmdID>
+ <Target><LocURI>./contacts/james_bond</LocURI></Target>
+ <Source><LocURI>./dev-contacts</LocURI></Source>
+ <MapItem>
+ <Target><LocURI>10536681</LocURI></Target>
+ <Source><LocURI>1024</LocURI></Source>
+ </MapItem>
+ </Map>
+ <Final/>
+ </SyncBody>
+</SyncML>
\ No newline at end of file
Added: XML-WBXML-SyncML/t/test-docs/syncml-008.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-008.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>3</MsgID>
+ <Target><LocURI>IMEI:493005100592800</LocURI></Target>
+ <Source><LocURI>http://www.syncml.org/sync-server</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>3</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
+ <TargetRef>http://www.syncml.org/sync-server</TargetRef>
+ <SourceRef>IMEI:493005100592800</SourceRef>
+ <Data>200</Data>
+ </Status>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>3</MsgRef><CmdRef>5</CmdRef><Cmd>Map</Cmd>
+ <TargetRef>./contacts/james_bond </TargetRef>
+ <SourceRef>./dev-contacts</SourceRef>
+ <Data>200</Data>
+ </Status>
+ <Final/>
+ </SyncBody>
+</SyncML>
Added: XML-WBXML-SyncML/t/test-docs/syncml-009.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-009.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>1</MsgID>
+ <Target><LocURI>http://www.syncml.org/sync-server</LocURI></Target>
+ <Source><LocURI>IMEI:493005100592800</LocURI></Source>
+ <Cred> <!--The authentication is optional.-->
+ <Meta><Type xmlns='syncml:metinf'>syncml:auth-basic</Type></Meta>
+ <Data>QnJ1Y2UyOk9oQmVoYXZl</Data> <!--base64 formatting of "userid:password"-->
+ </Cred>
+ </SyncHdr>
+ <SyncBody>
+ <Alert>
+ <CmdID>1</CmdID>
+ <Data>200</Data> <!-- 200 = TWO_WAY_ALERT -->
+ <Item>
+ <Target><LocURI>./contacts/james_bond</LocURI></Target>
+ <Source><LocURI>./dev-contacts</LocURI></Source>
+ <Meta>
+ <Anchor xmlns='syncml:metinf'>
+ <Last>234</Last>
+ <Next>276</Next>
+ </Anchor>
+ </Meta>
+ </Item>
+ </Alert>
+ <Sync>
+ <CmdID>2</CmdID>
+ <Target><LocURI>./contacts/james_bond</LocURI></Target>
+ <Source><LocURI>./dev-contacts</LocURI></Source>
+ <Meta>
+ <Mem xmlns='syncml:metinf'>
+ <FreeMem>8100</FreeMem>
+ <!--Free memory (bytes) in Calendar database on a device -->
+ <FreeID>81</FreeID>
+ <!--Number of free records in Calendar database-->
+ </Mem>
+ </Meta>
+ <Replace>
+ <CmdID>3</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Source><LocURI>1012</LocURI></Source>
+ <Data><!--The vCard data would be placed here.--></Data>
+ </Item>
+ </Replace>
+ </Sync>
+ <Final/>
+ </SyncBody>
+</SyncML>
Added: XML-WBXML-SyncML/t/test-docs/syncml-010.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-010.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>SyncML/1.1</VerProto>
+ <SessionID>1</SessionID>
+ <MsgID>1</MsgID>
+ <Target><LocURI>IMEI:493005100592800</LocURI></Target>
+ <Source><LocURI>http://www.syncml.org/sync-server</LocURI></Source>
+ </SyncHdr>
+ <SyncBody>
+ <Status>
+ <CmdID>1</CmdID>
+ <MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
+ <TargetRef>http://www.syncml.org/sync-server</TargetRef>
+ <SourceRef>IMEI:493005100592800</SourceRef>
+ <Data>212</Data> <!--Statuscode for OK, authenticated for session-->
+ </Status>
+ <Status>
+ <CmdID>2</CmdID>
+ <MsgRef>1</MsgRef><CmdRef>1</CmdRef><Cmd>Alert</Cmd>
+ <TargetRef>./contacts/james_bond</TargetRef>
+ <SourceRef>./dev-contacts</SourceRef>
+ <Data>200</Data> <!--Statuscode for OK-->
+ <Item>
+ <Data><Anchor xmlns='syncml:metinf'><Next>276</Next></Anchor></Data>
+ </Item>
+ </Status>
+ <Status>
+ <CmdID>3</CmdID>
+ <MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Sync</Cmd>
+ <TargetRef>./contacts/james_bond</TargetRef>
+ <SourceRef>./dev-contacts</SourceRef>
+ <Data>200</Data> <!--Statuscode for Success-->
+ </Status>
+ <Status>
+ <CmdID>4</CmdID>
+ <MsgRef>1</MsgRef><CmdRef>3</CmdRef><Cmd>Replace</Cmd>
+ <SourceRef>1012</SourceRef>
+ <Data>200</Data> <!--Statuscode for Success-->
+ </Status>
+ <Alert>
+ <CmdID>5</CmdID>
+ <Data>200</Data> <!-- 200 = TWO_WAY_ALERT -->
+ <Item>
+ <Target><LocURI>./dev-contacts</LocURI></Target>
+ <Source><LocURI>./contacts/james_bond</LocURI></Source>
+ <Meta>
+ <Anchor xmlns='syncml:metinf'>
+ <Last>200005021T081812Z </Last>
+ <Next>200005022T093223Z </Next>
+ </Anchor>
+ </Meta>
+ </Item>
+ </Alert>
+ <Sync>
+ <CmdID>6</CmdID>
+ <Target><LocURI>./dev-contacts</LocURI></Target>
+ <Source><LocURI>./contacts/james_bond</LocURI></Source>
+ <Replace>
+ <CmdID>7</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Target><LocURI>1023</LocURI></Target>
+ <Data><!--The vCard data would be placed here.--></Data>
+ </Item>
+ </Replace>
+ <Add>
+ <CmdID>8</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Source><LocURI>10536681</LocURI></Source>
+ <Data><!--The vCard data would be placed here.--></Data>
+ </Item>
+ </Add>
+ </Sync>
+ <Final/>
+ </SyncBody>
+</SyncML>
Added: XML-WBXML-SyncML/t/test-docs/syncml-012.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-012.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncHdr>
+ <VerDTD>1.1</VerDTD>
+ <VerProto>DM/1.1</VerProto>
+ <SessionID>0</SessionID>
+ <MsgID>0</MsgID>
+ <Target>
+ <LocURI>My_SyncML_DM_Device</LocURI>
+ </Target>
+ <Source>
+ <LocURI>http://www.TheUltimateManagementServer.com</LocURI>
+ </Source>
+ </SyncHdr>
+ <SyncBody>
+ <Add>
+ <CmdID>1</CmdID>
+ <Item>
+ <Target>
+ <LocURI>
+ ./SyncML/DMAcc/UltimateManagement
+ </LocURI>
+ </Target>
+ <Meta>
+ <Format xmlns="syncml:metinf">node</Format>
+ </Meta>
+ <Data/>
+ </Item>
+ <Item>
+ <Target>
+ <LocURI>./SyncML/DMAcc/UltimateManagement/Addr</LocURI>
+ </Target>
+ <Data>www.TheUltimateManagementServer.com</Data>
+ </Item>
+ <Item>
+ <Target>
+ <LocURI>./SyncML/Con/My_ISP</LocURI>
+ </Target>
+ </Item>
+ <Item>
+ <Target>
+ <LocURI>./SyncML/Con/My_ISP/PX/Addr</LocURI>
+ </Target>
+ <Data>123.123.123.123</Data>
+ </Item>
+ <!--...and so on until all bootstrap parameters are transferred.-->
+ </Add>
+ <Final/>
+ </SyncBody>
+</SyncML>
\ No newline at end of file
Added: XML-WBXML-SyncML/t/test-docs/syncml-013.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-013.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncBody>
+ <Sync>
+ <Add>
+ <CmdID>6</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Source>
+ <LocURI>pas-id-3F4B790300000000</LocURI>
+ </Source>
+ <Data>BEGIN:VCARD
+VERSION:2.1
+X-EVOLUTION-FILE-AS:Ximian, Inc.
+N:
+LABEL;WORK;ENCODING=QUOTED-PRINTABLE:401 Park Drive 3 West=0ABoston, MA
+02215=0AUSA
+TEL;WORK;VOICE:(617) 236-0442
+TEL;WORK;FAX:(617) 236-8630
+EMAIL;INTERNET:[EMAIL PROTECTED]
+URL:www.ximian.com/
+ORG:Ximian, Inc.
+NOTE:Welcome to the Ximian Addressbook.
+UID:pas-id-3F4B790300000000
+END:VCARD</Data>
+ </Item>
+ </Add>
+ </Sync>
+ <Final/>
+ </SyncBody>
+</SyncML>
\ No newline at end of file
Added: XML-WBXML-SyncML/t/test-docs/syncml-014.xml
==============================================================================
--- (empty file)
+++ XML-WBXML-SyncML/t/test-docs/syncml-014.xml Wed Aug 10 18:28:10 2005
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.1//EN" "http://www.syncml.org/docs/syncml_represent_v11_20020213.dtd">
+<SyncML>
+ <SyncBody>
+ <Sync>
+ <Add>
+ <CmdID>6</CmdID>
+ <Meta><Type xmlns='syncml:metinf'>text/x-vcard</Type></Meta>
+ <Item>
+ <Source>
+ <LocURI>pas-id-3F4B790300000000</LocURI>
+ </Source>
+ <Data><![CDATA[BEGIN:VCARD
+VERSION:2.1
+X-EVOLUTION-FILE-AS:Ximian, Inc.
+N:
+LABEL;WORK;ENCODING=QUOTED-PRINTABLE:401 Park Drive 3 West=0ABoston, MA
+02215=0AUSA
+TEL;WORK;VOICE:(617) 236-0442
+TEL;WORK;FAX:(617) 236-8630
+EMAIL;INTERNET:[EMAIL PROTECTED]
+URL:www.ximian.com/
+ORG:Ximian, Inc.
+NOTE:Welcome to the Ximian Addressbook.
+UID:pas-id-3F4B790300000000
+END:VCARD
+]]>
+ </Data>
+ </Item>
+ </Add>
+ </Sync>
+ <Final/>
+ </SyncBody>
+</SyncML>
\ No newline at end of file
More information about the Rt-commit
mailing list