[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 ']]>]]&lt;<![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