J2ME �‹��ł� XML �p�[�T

�Ȃ�΂�傤���� <rna at horobi.com>

2002�N10��27�� �쐬
version 1.0.0
�ڎ�

���̕񍐂ɂ‚���

���̕񍐂� J2ME �‹��A���Ɍg�ѓd�b�� Java �A�v���P�[�V�������s�‹��ɂ����āAXML �p�[�T���g�p����ۂ̒��ӓ_����_�ɂ‚��Ē����������̂ł���B�����Ŏg�� XML �p�[�T�͒ʏ�̃o�C�i��������Ă��Ȃ� XML �f�[�^���������̂Ƃ���B�܂��A�ǂݍ��� XML �f�[�^�̏����� XML �f�[�^�̐����E�o�͂Ȃǂɂ‚��Ă͈���Ȃ��B

J2ME �‹��̊T�v

J2ME (Java2 platform, Micro Edition) �͑g�ݍ��݋@��APDA�A�g�ѓd�b�Ȃǂ̂悤�Ȋ‹��ɓ������� Java �‹��̎d�l�ł���B���{�ł͌g�ѓd�b�L�����A�e�Ђ� J2ME �‹�����������[�����̗p�������ƂŁA���Ɍg�ѓd�b�����A�v���P�[�V�����̎�v�ȃv���b�g�t�H�[���Ƃ��Ē��ڂ���Ă���B�ȉ��A�e�Ђ̌g�ѓd�b�� J2ME �‹��̎d�l�␧���Ȃǂɂ‚��āAXML �p�[�T�𓮍삳����ۂɒ��ӂ��K�v�ȓ_�����Ă����B

J2ME �ƌ����Ă� API �̌݊�������s�‹��̐����Ȃǂ̓_�Ŋe�ЈقȂ�̂�����ł���(�Q��: [iapp], [japp], [ezplus])�B���̊T�v���\1�ɂ܂Ƃ߂��B�����̂��� API �̈Ⴂ�ɂ‚��Ă� XML �p�[�T�ɒ��ڊ֌W���Ȃ��B�ǂ�� CLDC (Connected, Limited Device Configuration) �ɏ������Ă���AXML �p�[�T�̋@�\�� CLDC �� API �����Ŏ����ł���B�d�v�Ȃ̂́A�A�v���P�[�V����(JAR�t�@�C��)�̃T�C�Y��HTTP�ʐM�ɂ����̓]���ʂ̐����ł���B

�\1: �T�[�r�X���̎d�l�Ɛ���
�T�[�r�X�� �L�����A API JAR�T�C�Y��� HTTP�ʐM��� �ڑ��搧�� XML��M�Ɏg�p�”\��
���f�B�A�^�C�v
���� ���
i�A�v��(503i) NTT�h�R�� CLDC 1.0 / DoJa 1.0 10KB 10KB 5KB �_�E�����[�h��Ɠ���T�C�g �����Ȃ�
i�A�v��(504i) NTT�h�R�� CLDC 1.0 / DoJa 2.0 30KB 10KB 5KB �_�E�����[�h��Ɠ���T�C�g �����Ȃ�
Java�A�v�� J-Phone CLDC 1.0 / MIDP 1.0 / JSCL 30KB/80KB*1 80KB*2 12KB ������(�F�‚��K�v*3) application/java-archive
ezplus KDDI CLDC 1.0 / MIDP 1.0 / KDDI Profile 50KB 9000byte 9000byte 3�ӏ��܂Őݒ�”\ application/octet-stream

*1 80KB �̓p�P�b�g�ʐM�Ή��[���̏ꍇ�B���k����JAR�t�@�C��(50KB�܂�)�� RecordStore �Ɋi�[���A��������W�J���ēǂݍ��ނ��Ƃ��”\�B���̋@�\���g���Ǝ����� 100�`200KB (���k���ɂ��)�̃f�[�^��������B

*2 ���f�B�A�^�C�v�� application/java-archive �ɐݒ莞�B�摜�E���ȂȂǂ�12KB�B

*3 �t�ɔF�‚Ȃ��ł͒ʐM�@�\�͈�ؗ��p�ł��Ȃ��B

�A�v���P�[�V������ XML �𗘗p����ꍇ�Œ�K�v�ƂȂ�̂� XML �p�[�T�����AJAR �t�@�C������10KB���x�ɐ��������g�ѓd�b�̊‹��ł͎g�p�ł���p�[�T�͌����Ă���B

�܂��A�g�ѓd�b�̊‹��ł� HTTP �ʐM�̓]���ʂ� 10KB ���x�ɂ܂Ő�������Ă���B�����Ɛ������ɂ��ꍇ�ł�����ł͒ʐM���x�Ɖۋ����l�����Ă��̂��炢�̃T�C�Y�̃f�[�^����Ɉ������ƂɂȂ�ł��낤�B��ʂ� XML �p�[�T�͂����Ƒ傫�ȃT�C�Y�̃f�[�^�Ńe�X�g����Ă��邽�߁A��ʂɍ����\�ƌ����Ă���p�[�T���L���ɂȂ�Ƃ͌���Ȃ��B

���f�B�A�^�C�v�̐����ɂ‚��Ă͒��ӂ��K�v�ł���B���f�B�A�^�C�v�̐����̓L�����A�̃Q�[�g�E�F�C�� HTML ��摜�ȂǓ���̃��f�B�A�^�C�v�̃R���e���c�����ʂ��Ȃ����Ƃ��琶���鐧���ł���B���̐���������邽�߂ɂ́A�T�[�o�[���ŃR���e���c�ɖ{���̃��f�B�A�^�C�v(SVG �Ȃ� image/svg+xml �Ȃ�)�ł͂Ȃ����f�B�A�^�C�v(�Ⴆ�� application/java-archive)��ݒ肷��Ƃ����A���̋U�����s���K�v������B�g�ѓd�b���̃A�v���P�[�V�����ł� HTTP ���X�|���X�̃��f�B�A�^�C�v���ӎ����邱�Ƃ͂قƂ�ǂȂ��̂Ŗ��Ȃ����A�����T�[�o�[����ʂ� PC �ɂ������f�[�^��z�M���Ă���ꍇ�ɂ́APC ���̃u���E�U�Ńf�[�^���\���ł��Ȃ��Ȃ�(�_�E�����[�h�ɂȂ��Ă��܂�)�Ƃ�����肪����������B

�܂��ڑ���̐����ɂ‚��Ă��m���Ă��������BXML �f�[�^�� DTD ��O�����́AXML Schema �����Ȃǂւ̎Q�Ƃ�����ꍇ�A�ڑ��搧���ɂ���ēǂݍ��߂Ȃ��Ȃ邱�Ƃ�����B���݂̂Ƃ��� J2ME �Ŏg����p�[�T�ł����̊O�����\�[�X�ւ̎Q�Ƃ��s������̂͂قƂ�ǂȂ��̂Ŏ��ۂɂ͖��ɂȂ�Ȃ���������Ȃ����A�����Ɍ����ė��ӂ��ׂ��_�ł͂���B

�y��XML�p�[�T

Java �œ��� XML �p�[�T�͐��������A�g�ѓd�b�� J2ME �‹��œ������̂͏��Ȃ��BJ2ME ��API�̐�������r���h�ł��Ȃ��A�R�[�h�T�C�Y���傫������A�������g�p�ʂ��傫���A�Ȃǂ̖��œ��삵�Ȃ��ꍇ�������B

���̂悤�Ȗ�肪�Ȃ����A��r�I�ȒP�ȍ�ƂŃN���A�ł�����̂��\2�ɋ������B�R�[�h�T�C�Y�ɂ‚��Ă̓p�[�T�����삷��ŏ��̍\���� JAR �t�@�C���̃T�C�Y�� 20KB ���x�ȉ��ɂȂ���̂�I�񂾁B�r���h�ɂ‚��Ă͎�ϓI�ł͂��邪�A�r���h���̃G���[�� 100 �ˆȏ�o����̂ɂ‚��Ă͂��̓��e���������C������Ɣ��f�������̂����O�����B�G���[�� 100 �ˆȓ��̂��̂ɂ‚��Ă͓���”\�ȏ�ԂɂȂ�܂Ń\�[�X�R�[�h���C�����ăe�X�g�����B

�Ƃ肠��������͂��Ă��A���ۂɐ��\�I�E�@�\�I�ȓ_�Ŏ��p�ɑς��邩�ǂ����Ƃ������͂��邪�A���̓_�ɂ‚��Ă͎��͈ȍ~�Ō�������B�܂��A�r���h���ɕK�v�ȏC����Ƃɂ‚��Ă��u�t�^B.�p�[�T�̏C�����@�v���Q�Ƃ��ꂽ���B

�Ȃ��A�����ɋ��������̂͂�������\�[�X�R�[�h���܂ߖ����œ���ł���B�������Ĕz�z�ɂ‚��Ă̓��C�Z���X�㐧�������ꍇ������BMin �͓Ǝ��̃��C�Z���X�A����ȊO�̓I�[�v���\�[�X���C�Z���X�ł��邪�ABSD �X�^�C���̃��C�Z���X�ł����e�������ɈقȂ���̂�����B�ڂ����͊e�p�[�T�̕t�����������Q�Ƃ��ꂽ���B

�\2: �e��y�ʃp�[�T
�p�[�T�� �o�[�W���� API ���C�Z���X �����
kXML2 2.1.3 Pull + �Ǝ�tree CPL http://www.kxml.org/
MXP1 1.1.1c Pull BSD�X�^�C�� http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/
MinML1 1.7 SAX1 BSD�X�^�C�� http://www.wilson.co.uk/xml/minml.htm
MinML2 0.3 SAX2 BSD�X�^�C�� http://www.wilson.co.uk/xml/minml2.htm
TinyXML 0.7 �Ǝ�(event + tree) GPL http://www.gibaradunn.srac.org/tiny/
NanoXML/Lite 2.2.1 �Ǝ�(tree) zlib/libpng http://web.wanadoo.be/cyberelf/nanoxml/index.html
Min 1.05A SAX1 �Ǝ� http://www.docuverse.com/min/

API �ɂ‚��Ă͎��͂Ő�������BAPI �̂����p�[�T�Ǝ��̂��̂ɂ‚��Ă��u�e��p�[�T�̓����v�̃p�[�T���̐������Q�Ƃ��ꂽ���B

API�ƌ݊���

API �̈Ⴂ

XML �p�[�T���p�[�X�������e���A�v���P�[�V�����ɓn�����@(API)�̓p�[�T�ɂ���ĈقȂ�B�p�[�T�� API �͑�ʂ���ƈȉ��̎O�‚�����B

�c���[�\�z�^ API �́A�p�[�X�������e���c���[�\�����Ƃ����I�u�W�F�N�g�̏W���̌`�ŃA�v���P�[�V�����ɓn�������� API �ł���B��\�I�Ȃ��̂Ƃ��� DOM ����������B�f�[�^�̈����₷������D�܂����������AXML �f�[�^���ۂ��ƃ������ɓǂݍ��ނ��߁A�������g�p�ʂɐ����̂��� J2ME �‹��ł̎g�p�ɂ͌����Ȃ��ƍl������B

�C�x���g�쓮�^ API �̓p�[�T���^�O�������o����x�ɃA�v���P�[�V���������������C�x���g�n���h���ɒʒm��������� API �ł���B��\�I�Ȃ��̂Ƃ��� SAX ����������B�K�v�ȃC�x���g����������������ȊO�𖳎��ł��A��������ꍇ�������ς̃f�[�^�������ɂ��̏�Ŏ̂Ă��邽�߁A�������g�p�ʂ��Ⴍ�}������B���̂��ߌy�ʃp�[�T�� API �ɍD��Ŏg�p����Ă��邪�A�f�[�^�̈�����������A�C�x���g�n���h���̌`�ŏ����ƃA�v���P�[�V�����R�[�h���킩��ɂ����Ȃ�A�Ȃǂ̗��R�Ōh������邱�Ƃ������B

�Ō�� Pull �^ API �̓A�v���P�[�V���������p�[�X�̐i�s�𐧌䂵�Ȃ���p�[�X�����f�[�^�������o�������� API �ł���B��\�I�Ȃ��̂Ƃ��� XML Pull API ����������B�C�x���g�쓮�^ API �Ɠ��l�������g�p�ʂ��Ⴍ�}���������ŁA�킩��₷���A�v���P�[�V�����R�[�h��������B�C�x���g�쓮�^ API �Ɣ�r���āA�n���h���C���^�[�t�F�[�X�₻�̎���(��������C�x���g�ɑ΂��Ă���̎������K�v�ɂȂ�)�A�p�[�T���̃n���h���Ăяo���̕��̃R�[�h���ߖ񂳂��̂ŃR�[�h�T�C�Y����菬�����ł���B���̂��߁A���݂̂Ƃ���y�ʃp�[�T�ɍł��K���� API �ƍl�����Ă���B

��̓I�� API �̓����ɂ‚��Ă��\3�ɂ܂Ƃ߂��B

�\3: �eAPI�̓���
API�� ���� ���O���
DOM level 1 (DOM1) �c���[�\�z�^ �~
DOM level 2 (DOM2) �c���[�\�z�^ ��
SAX version 1 (SAX1) �C�x���g�쓮�^ �~
SAX version 2 (SAX2) �C�x���g�쓮�^ ��
XML Pull API (Pull) Pull �^ ��*

* ���ۂɋ@�\���邩�ǂ����͎����ˑ��B

�\���́u���O��ԁv�̍��ڂ́A�p�[�T���v�f�⑮���̖��O��Ԃ̏���n�����ǂ�����\���B���̋@�\���Ȃ��Ă����͂Ŗ��O��Ԃ𒲂ׂ邱�Ƃ͉”\�����A���̕��̃R�[�h(���O��ԃe�[�u���Ƃ��̃X�^�b�N�̊Ǘ�)���A�v���P�[�V�������ɕK�v�ɂȂ�B�t�Ɍ����Ɩ��O��ԃT�|�[�g�̂��� API ���������p�[�T�͂��̕��R�[�h�T�C�Y�������Ă���A�p�[�X�������኱�d���Ȃ�̂����ʂł���B

XML 1.0 �ւ̏�����

���݂̂Ƃ��� XML 1.0 �Ɋ��S�ɏ��������y�ʃp�[�T�͂قƂ�ǂȂ��B�����̃p�[�T�͉��炩�̐����t���̃T�u�Z�b�g�d�l�𖞂������̂ɂȂ��Ă���A�Ó������؂͂������̂��� XML 1.0 �Œ�߂�ꂽ non-validating �p�[�T�̎d�l�ɂ������ɂ͏]���Ă��Ȃ��B�e�X�g�ΏۂƂ����e�p�[�T�� XML 1.0 �̎d�l�ɑ΂���Ή��󋵂� �\4�ɂ܂Ƃ߂��B

�\4: XML�e�@�\�Ƃ̌݊���
�p�[�T�����ݓ��e��v�fCDATA
�Z�N�V����
�R�����g���������Q����`�ώ������������O�������f�t�H���g
����
kXML2����������������*1�~�~
MXP1 (min)����������������*1�~�~
MXP1 (std)�����������������~��
MinML1��*2�������������~�~�~
MinML2��*2�������������~�~�~
TinyXML��*3����������������*4��*5
NanoXML/Lite�~�������������~�~�~
Min�~�~�~�~�~���~�~�~�~

*1 �A�v���P�[�V�������Ŏ��̂��`����R�[�h���K�v�B

*2 �����Ƃ��ċ󔒂݂̂̃e�L�X�g�m�[�h���̂Ă�B

*3 �o�O�t�B�b�N�X�p�b�`��K�p�����ꍇ�B���X�̓^�O�̌��ɑ����󔒂𖳏����Ɏ̂Ă�Ƃ����o�O������B

*4 �A�v���P�[�V�������ŊO�����̂���������R�[�h���K�v�B

*5 �f�t�H���g�l�͎����I�ɂ͓K�p����Ȃ����AATTLIST �̃C�x���g������̂Ŏ��͂Ŏ�������Ή”\�B

�܂��A�قƂ�ǂ̌y�ʃp�[�T�� DTD �̓����T�u�Z�b�g����؉��߂��Ȃ��Bnon-validating �p�[�T�͑Ó������؂͂��Ȃ����ADTD �̓����T�u�Z�b�g������΂�����p�[�X���ē������̂̒u���ƃf�t�H���g�����̐ݒ���s�����Ƃ��v�������B

�y�ʃp�[�T�ɂƂ��Ă���͕��S�ɂȂ�̂� XML Pull API �Ȃǂł͂��̋@�\���I�v�V�����Ƃ��Ă���B�����T�u�Z�b�g�̂��镶�����������Ƃ͔�r�I�܂�ł��邵�A�f�t�H���g�����̌��ʂ͌��X DTD ���Q�Ƃ��Ȃ� XML �f�[�^���������߂ɃA�v���P�[�V�������Ńn�[�h�R�[�h����邱�Ƃ������̂ŁA���ۂɂ͂��̐����͂��܂��Q�ɂ͂Ȃ�Ȃ��B����Ĉȉ��ł͂��̎�̃p�[�T�����t���Z�b�g�p�[�T�ƌĂԂ��Ƃɂ���B

�����ɑ΂��Ă����̋@�\���g��Ȃ����Ƃ�v������p�[�T������B�ȉ����̎�̃p�[�T���T�u�Z�b�g�p�[�T�ƌĂԁB�T�u�Z�b�g�p�[�T�̗v���ɂ́A�Ⴆ�΍��ݓ��e(�v�f���e�ŁA������Ǝq�v�f��������������)�������Ȃ��Ƃ������̂�����B���ݓ��e�� XHTML �̂悤�ȕ����w���̕����t�H�[�}�b�g�ł͑��p����邪�A�f�[�^�w���̕����t�H�[�}�b�g�ł͑S���g��Ȃ��ꍇ�������B�Ⴆ�ΏZ���^�t�H�[�}�b�g�� ContactXML [cxml] �Ȃǂ�����ɊY������B

���̎�̐����ōł����������͕̂����� XML �̃T�u�Z�b�g�d�l�ł��� Minimal XML �ɏ������邱�Ƃ����߂���̂ł���BMinimal XML �͊�{�I�ɊJ�n�^�O�ƏI���^�O�ƕ����Q�Ƃ�������Ȃ����߁A�����v������p�[�T�ł͒ʏ�� XML �f�[�^�͂܂������Ȃ��B�ʏ�� XML �f�[�^�� �@�B�I�� Minimal XML �ɕϊ����邱�Ƃ͉”\�ł��邪�A��ʂɂ́A��p�� DTD �Ɖ^�p�K��(�R�����g�������g���Ȃ��̂�)�̌��ō쐬�����f�[�^�݂̂��������ƂɂȂ�B���̂悤�Ȍ����������ƈ����ւ��ɃR���p�N�g�ō����ȃp�[�T�̎�����������B

�G���R�[�f�B���O

J2ME �‹��ł͒ʏ�� Java �‹��ƈقȂ�A���p�ł���G���R�[�f�B���O�ɐ���������B���ɓ��{�̌g�ѓd�b�̏ꍇ�A��{�I�ɂ̓V�t�gJIS (SJIS) �� ASCII (US-ASCII) �����T�|�[�g���Ă��Ȃ�(i�A�v���̏ꍇ�� SJIS �̂�)�BXML �p�[�T���ꕔ�������Ċ‹��̃T�|�[�g����G���R�[�f�B���O���������Ȃ��B�܂��y�ʃp�[�T�̏ꍇ�� XML �� encoding �錾�ɋL�q����� IANA �̃G���R�[�f�B���O����K�؂� Java �̃G���R�[�f�B���O���ɕϊ�����悤�Ȃ��Ƃ����Ȃ��B

����āA�ʏ�̓p�[�X�O�ɂ��炩���� SJIS �� Reader ���쐬���Ă���������p�[�T�ɓn���ăp�[�X����Ƃ����菇���]�܂����B����ł������� InputStream ���g�p���ăp�[�T�̃G���R�[�f�B���O���o�@�\���g���ꍇ�A�ǂ��܂ł��Ăɂł��邩���\5�ɂ܂Ƃ߂��B

�\5: InputStream �g�p���̃G���R�[�f�B���O�Ή���
�p�[�T�� UTF-16/UTF-8 �������o encoding�錾�̈��� �f�t�H���g�̓���
���o�̉”� UTF-16 �ǂݍ��� UTF-8 �ǂݍ���
kXML2 ���‹��ˑ��‹��ˑ� InputStreamReader �̃R���X�g���N�^�ɂ��̂܂ܓn�� UTF-8 ���g�p
MXP1 �~-- ��؈���Ȃ� �G���[
MinML1 �~-- ��؈���Ȃ� �‹��̃f�t�H���g�G���R�[�f�B���O���g�p
MinML2 �~-- ��؈���Ȃ� �‹��̃f�t�H���g�G���R�[�f�B���O���g�p
TinyXML ������ ASCII, UTF-8, UTF-16�n�ȊO�͌��o���ꂽ���_�ŃG���[ UTF-8 ���g�p
NanoXML/Lite --- ��؈���Ȃ� Reader ����̂݃p�[�X����
Min ������ XML�錾������ƃG���[ UTF-8 ���g�p

�\���番����悤�Ɉ�ʂ̃p�[�T�ƈႢ�A�y�ʃp�[�T�ł� encoding �錾���̂�����Ȃ��ꍇ�������B����e�X�g�����p�[�T�̒��ł� kXML2 �݂̂� encoding �錾���������A�錾���ꂽ�l�����̂܂� InputStreamReader �̃R���X�g���N�^�ɓn�����߁ASJIS (����� IANA ���ł͂Ȃ�)�����T�|�[�g���Ȃ��‹��ł͎�����g���Ȃ��B

�Ȃ��ꕔ�̃p�[�T(�Ⴆ�� TinyXML �� Min)�͎��O�� UTF-16 �n�� UTF-8 �� Reader ���������Ă��邽�߁A�������T�|�[�g���Ȃ� J2ME �‹��ł� UTF-16 �� UTF-8 �� XML �f�[�^���p�[�X�ł���B

�x���`�}�[�N

�e�X�g�Ώۂ̃p�[�T�ɂ‚��Čg�ѓd�b���@�� J2ME �‹��ŊȒP�ȃx���`�}�[�N�e�X�g�����{�����B�e�X�g���e�� 10KB ���x�� XML �f�[�^���p�[�X���A�v�f�Ƒ����ƕ����̐����J�E���g����Ƃ������̂ł���B

�e�X�g�̎菇�͈ȉ��̒ʂ�ł���B

�e�X�g�f�[�^�̓x���`�}�[�N�A�v���P�[�V������ JAR �t�@�C�����̃��\�[�X���炠�炩���ߓK�؂ȃG���R�[�f�B���O��ݒ肵�č쐬���� InputStreamReader ����ēǂݍ��񂾁B������ TinyXML �ɂ‚��Ă� Reader ����p�[�X���ł��Ȃ��̂� InputStream ����ǂݍ��񂾁B

�e�X�g�f�[�^�͎O��ޗp�ӂ����B���̓��e���\6�ɂ܂Ƃ߂��B

�\6: �e�X�g�t�@�C��
�t�@�C���� �T�C�Y �����^ ���������� �v�f��/������/������ �}�[�N�A�b�v���x ���l
svg1 10143 SVG 1.0 us-ascii 93/473/781 92%
xhtml1 10223 XHTML 1.0 us-ascii 130/53/7665 26% XML 1.0 �d�l���̖`��������؂�o�������́B
xhtml2 9626 XHTML 1.0 Shift_JIS 130/53/4293 - * xhtml01.html�̖M��B

* �}���`�o�C�g�G���R�[�f�B���O�̃t�@�C���ł���A���̃t�@�C���Ƃ͒P���ɔ�r�ł��Ȃ��̂Œl�͏ȗ������B

�\���́u�}�[�N�A�b�v���x�v�� XML �f�[�^�̒��Ń^�O����߂銄����\����܂��Ȏw�W�ł���B�p�[�T�̐��\�]���̏ꍇ�A 1 - �������e�̃T�C�Y / �t�@�C���T�C�Y �ŕ\�����B��ʂɃ}�[�N�A�b�v���x�̍����f�[�^���p�[�T�ɕ��ׂ�������B

�Ȃ��AMinimal XML ������ Min �ɑ΂��Ă� Min �ɕt������ minimizer �Ƃ����c�[��(���ASCII�����̏o�͂ɑΉ�����������)�Ńe�X�g�t�@�C���� Minimal XML �ɕϊ��������̂��g�p�����B

�x���`�}�[�N�A�v���P�[�V������ CLDC/MIDP �ɏ����������̂ŁAJ-Phone �� Java �A�v���Ƃ��ē��삷����̂ł���(ezplus �ł̓���͖��m�F)�B�e�p�[�T�̃N���X�̓p�[�X�ɕK�v�ȍŏ����̍\���Ńp�b�P�[�W���O�����B�ڍׂ̓x���`�}�[�N�A�v���P�[�V�����̃\�[�X�R�[�h[src]���Q�Ƃ��ꂽ���B

Java �A�v���Ή��g�ѓd�b�ł��铌�� J-T51 ��Ŏ��{�����e�X�g���ʂ��\7�̒ʂ�ł���B�e�p�[�T�̃R�[�h�T�C�Y(�p�[�T������JAR�t�@�C�����Z�̃T�C�Y)�����킹�Ď������B

�\7: �x���`�}�[�N���� (����J-T51�g�p)
�p�[�T�� �R�[�h�T�C�Y*1 �p�[�X���� (ms)
svg1/xhtml1/xhtml2
�N������*2 (ms) ����
kXML2 11.3KB 3944/3700/3036 677 ��
MXP1 17.8KB 3034/2576/2298 1777 ��
MinML1 13.6KB 4484/4416/3558 1057 ��*3
MinML2 16.1KB 5026/4708/3850 1448 ��*3
TinyXML 9.8KB 4402/3850/-*4 944 ��
NanoXML/Lite 6.8KB 6160/-/- 700 ��*3
Min 14.8KB 2400/2060/1926 *5 1528 -

*1 �p�[�T���ꏏ�Ƀp�b�P�[�W�����x���`�}�[�N�A�v���P�[�V������JAR�t�@�C���T�C�Y����p�[�T���܂܂Ȃ��A�v���P�[�V������JAR�t�@�C���T�C�Y���������l�B

*2 ����N�����̃p�[�X���Ԃ���2��ڈȍ~�̃p�[�X���Ԃ��������l�B

*3 �v�f�Ԃ̋󔒂̐����������������Ȃ��J�E���g���ꂽ�B

*4 Shift_JIS �ɔ�Ή��Ȃ��� xhtml2 �̓G���[�ɂȂ����B

*5 Minimizer �� Minimal XML �������e�X�g�t�@�C�����g�p�B

�e�p�[�T�̓����ƕ]��

kXML2

Stefan Haustein �����J������ XML Pull API �����̏��t���Z�b�g�p�[�T�B�I�[�v���\�[�X�A�v���P�[�V�����T�[�o Enhydra �̃R�~���j�e�B���J������ kXML �����Ɍy�ʉ���O�ꂵ�AJ2ME �����̎����ɂ������̂ł���B�c���[�^ API ������ kdom ���܂܂�Ă��邪����͕]�����Ă��Ȃ��B

�p�[�X���x�͓��ɑ����Ȃ����A�N�����Ԃ��ł��Z�������B�R�[�h�T�C�Y�����t���Z�b�g�p�[�T�̒��ł͍ŏ��̕��ނł���B

�o�����X�̂Ƃꂽ�����Ōg�ѓd�b�̊‹��ɓK���Ă���B���ǂ⃁���e�i���X���p�ɂɍs���Ă��荡��ɂ‚��Ă����҂ł���B

MXP1

Aleksander Slominski �����J������ XML Pull API �����̃p�[�T�B���t���Z�b�g�łƃt���Z�b�g��(non-validation �p�[�T)������B�R���p�N�g�ō����ȃp�[�T�Ƃ��Ēm���Ă���A���݂̂Ƃ��됢�E�ő��ƌ����Ă���BJ2ME �‹����� J2SE/EE �‹��ō����ɓ������Ƃ��d�����Ă���悤�ŁA���̂܂܂ł� J2ME �Ńr���h�ł��Ȃ��B�e�X�g�ɍۂ��Ă͂킸���ł͂��邪�C�����K�v�������B

�p�[�X���x�� Min ���O�Ƃ���ƍł������ł������BkXML2 �� 1.5 �{�߂����x�ő̊��”\�ȃ��x���̈Ⴂ������B�������N�����Ԃ͍ł������AkXML ���� 1 �b���]�v�ɑ҂������B�g�ѓd�b�̂悤�ɋN���E�I���̃T�C�N�����������‹��ł͋N�����Ԃ̒��������ɂȂ邩������Ȃ��B

�R�[�h�T�C�Y�͍���e�X�g�������ł͍ő�ł������B17.8KB �͏\���������Ƃ������邪�A30KB �������i�A�v���‹��ł͌�������������Ȃ��B

�������͖��͂����g�ѓd�b�̊‹��ł͏��X�o�����X�������B���ǂ⃁���e�i���X�͕p�ɂɍs���Ă��荡��ɂ‚��Ă͊��҂ł��邩������Ȃ��B

MinML1,2

John Wilson �����J�������g�ݍ��ݗp�p�[�T�� MinML1 �� SAX1�AMinML2 �� SAX2 �ɏ������Ă���B���̂܂܂ł� J2ME �Ńr���h���ʂ�Ȃ����AJ2ME �‹��ł͎g���Ȃ��ꕔ�̋@�\���폜���邱�ƂŃr���h�ł����B

���X XML-RPC �̂悤�ȗp�r��z�肵�Ă���A�ŋ߂̃o�[�W�����܂ō��ݓ��e�������Ȃ������B���̖��c�ŁA�����Ƃ��ėv�f���т̌��Ԃɂ���󔒂݂̂̕����f�[�^�͎̂ĂĂ��܂��B

MinML1 �̃p�[�X���x�͂��x���A�N�����Ԃ���Ⓑ���A�R�[�h�T�C�Y�����傫���A�Ƃ������Ƃł��܂茩��ׂ��Ƃ��낪�Ȃ����A�ǂ����Ă� SAX API ���g�p�������ꍇ�͗B��̑I�����ƂȂ�BMinML2 �� SAX2 ���T�|�[�g���邪���\�I�ɂ� MinML1 ��肳��ɗ��B

�����e�i���X�͑����Ă��邪���܂芈���ł͂Ȃ��B�����_�̍ŏI�X�V��2001�N11���ł���B

TinyXML

Tom Gibara �����J�������t���Z�b�g�� non-validation �p�[�T�BAPI �͓Ǝ��̃C�x���g�쓮�^ API �ƃc���[�^ API �����邪�A��҂͍���͕]�����Ă��Ȃ��BJ2ME �Ńr���h���邽�߂ɂ͑����C�����K�v�ł���B

�p�[�X���x��N�����Ԃ� MinML ��菭���܂��Ȓ��x�ł��܂薣�͓I�ł͂Ȃ����A�t���Z�b�g�p�[�T�ɂ��ւ�炸�R�[�h�T�C�Y�͔��ɏ������A�T�u�Z�b�g�p�[�T�� NanoXML/Lite �������ƍŏ��̃p�[�T�ł���BDTD ���p�[�X�ł���B��̌y�ʃp�[�T�Ƃ����_�ł����j�[�N�ȑ��݂ł���B������ DTD �̃p�[�X�@�\���g�ѓd�b�p�̃A�v���P�[�V�����Ő�������@��͋H�ł��낤�B

�����Ƃ��t���Z�b�g�p�[�T�ƌ����Ă����̊����x�ɂ͋^�₪�c��B�󔒂̈����Ƀo�O������(����͏C��������Ńe�X�g����)�AReader ����p�[�X�ł��Ȃ��̂� Shift_JIS �̃f�[�^�������Ȃ��A�O�����̎Q�Ƃ��������邽�߂� API �ɕs�������葊�΃p�X�̉����Ɏ��s����Ȃǂ̖�������Ă���(���ɂ����邩������Ȃ�)�B�܂��AATTLIST ���p�[�X���Ă��f�t�H���g�������p�[�X���ʂɃX�g���[�g�ɔ��f����Ȃ��̂͌����ɂ͎d�l�ᔽ�ł��낤�B

���̂悤�ȏ�Ԃ����A2000�N1���Ƀo�[�W����0.7�������[�X����Ĉȍ~��؃����e�i���X����Ă��Ȃ��B

NanoXML/Lite

Marc De Scheemaecker �����J�������T�u�Z�b�g�p�[�T�B���ݓ��e���������A��󔒕����̕��т̒��ɊJ�n�^�O������Ƒ��G���[�ɂȂ�BAPI �͓Ǝ��̃c���[�\�z�^�BJ2ME �ł̃r���h�͑����C�����K�v�ł���B

SAX API ���T�|�[�g�����t���Z�b�g�� NanoXML/Java ������A���������r�I�y�ʂȃp�[�T�����AJ2ME �ł̃r���h������������ߍ���̓e�X�g���Ȃ������B

�p�[�X���x�͍ł��x������ MXP1 �̔����̑��x�ł���B�N�����Ԃ� kXML �Ɠ����x�ɒZ�����̓_�͗ǂ��B�������Ȃɂ��f���炵���̂� 7KB ��؂�R�[�h�T�C�Y�ł���B�p�t�H�[�}���X��̓�_�͂��邪�A�B�� 503i �Ŏg����(�����Ɍ������Ƃ͎v����) XML �p�[�T�Ƃ����_�ʼn��l������B

2002�N4���Ɍ��݂̃o�[�W����(2.2.1)�������[�X���ꂽ��A���̃��W���[�o�[�W�����A�b�v�Ɍ����Ă̍�Ƃ��i��ł���A���オ���҂����B

Min

Docuverse �Ђ̊J������ Minimal XML �����̃T�u�Z�b�g�p�[�T�BAPI �� SAX1�B�uXML 1.0 �ւ̏������v�ŏq�ׂ��悤�ɋɂ߂Č��肳�ꂽ�@�\�����‚����ɍ����y�ʂȎ����ɂȂ��Ă���BJ2ME �ł̃r���h�ɂ͑����C�����K�v�ł���B

�p�[�X���x�� MXP1 �𔲂��čő��ł������B�N�����Ԃ͒��� MXP1 �Ɠ����x�B�R�[�h�T�C�Y�� MXP1 ���͏����������傫���B

�ő��ƌ����Ă� MXP1 �Ƃ̍��͂���قǂł͂Ȃ��Bsvg1 �ł͖�40%�������A���̃e�X�g�t�@�C���͑��������ɑ������� minimizer �ɂ�鑮���̗v�f���̌��ʂ��傫���Ǝv����B�����̏��Ȃ� xhtml1/xhtml2 �ł� 20% ���x�̍��ɂƂǂ܂��Ă���B���̒��x�̑��x����ƈ����ւ��� Minimal XML �̔��ɋ����������󂯓����ׂ��Ȃ̂��^��ł���B

��@�\�Ȃ����Ɍ���Ŋ����`�Ȃ̂�������Ȃ����A2000�N4���� 1.0A5 �����[�X�ȍ~��؃����e�i���X����Ă��Ȃ��B

�܂Ƃ�

����̒����� J2ME �‹��� XML �p�[�T�͎g�����ɂȂ�Ƃ������ʂ����������ƍl����B��ʓI�� Shift_JIS �̕����� 10KB ��� 3 �b�Ńp�[�X�ł���(kXML2)�Ƃ������Ƃ̓p�[�X���x�͖� 28000 byte/sec �ł���A�g�ѓd�b�̒ʐM���x�Ƃقړ����x�ł���B�R�[�h�T�C�Y�ɂ‚��Ă͂������2����� Java �A�v���P�[�V�����T�[�r�X�ł͂��قǏ�Q�ɂȂ�Ȃ��B�h�R���� 503i �ɂ‚��Ă͎c�O�Ȃ��猵�������ANanoXML/Lite �Ȃ�g����”\��������B

����e�X�g�����p�[�T�̒��Ńx�X�g�`���C�X��������Ȃ� kXML2 ������ł��낤�B�g�ѓd�b�̊‹����l�����ꍇ�����Ƃ��o�����X�̂Ƃꂽ�X�y�b�N������Ă���B

�A�v���P�[�V�����̃R�[�h�T�C�Y���������ꍇ�́A�����������Ȃ� NanoXML/Lite ���L�͂Ȍ��ɂȂ�ł��낤�B�t�ɃR�[�h�T�C�Y�ɗ]�T������Ȃ�p�[�X���x�D��� MXP1 ��I������̂��ǂ����낤�B�������N�����Ԃ̒����ɂ͒��ӂ���K�v������BTinyXML �͑��@�\�Ȃ̂ɃR�[�h�T�C�Y���������Ƃ����_�ŋ����[�����A�g�ѓd�b�̊‹��ł͑��@�\�̕��������܂萶���Ȃ����A�����x�⏫�����ɂ��^�₪����̂ŁA���͂Ń\�[�X�R�[�h�������e�i���X�ł���l�ȊO�ɂ͂����߂ł��Ȃ��B

�g�ѓd�b�œ��삷�� XML �p�[�T�Ƃ����������v���ɑ΂��āA�ӊO�ɂ����l�ȑI���������݂��邱�Ƃ͊�΂������Ƃł���BXML �̓��o�C���A�v���P�[�V�����ɂ����Ă��L���ȃ\�����[�V�����ɂȂ�ł��낤�B

A.�Q�l����

[iapp]
NTT�h�R�� i-appli �Z�p����
http://www.nttdocomo.co.jp/mc-user/i/java/
[japp]
J-Phone Java �A�v�� �Z�p����
http://www.dp.j-phone.com/java/index.html
[ezplus]
AU ezplus �Z�p����
http://www.au.kddi.com/ezfactory/tec/spec/ezplus.html
[cxml]
ContactXML
http://www.contactxml.org/
[src]
���̕񍐂Ɋ֘A�����\�[�X�R�[�h��
http://www.horobi.com/xml/mobile/res/

B.�p�[�T�̏C�����@

����̃e�X�g�ł� J2ME �Ńr���h���邽�߁A����уT�C�Y���k�����邽�߂ɁA�p�[�T�̃\�[�X�R�[�h���C�������B�ȉ��ɏC�����@�̊T�v�������B

SAX1 API
  • org.xml.sax �p�b�P�[�W����ȉ��̃N���X���c���Ă���ȊO�͍폜(MinML1 �ł͏C����)�B
    AttributeList, DTDHandler, DocumentHandler, EntityResolver, ErrorHandler, InputSource, Locator, Parser, SAXException, SAXParseException
    �A�� Min �ł� HandlerBase ���c���Ă����B
  • org.xml.sax.helpers �p�b�P�[�W�͑S���폜(MinML1 �ł͏C����)�B�ꍇ�ɂ���Ă� AttributeListImpl ���K�v��������Ȃ����A����e�X�g�����p�[�T�ł͕s�v�������B
  • J2ME �ɂ� Locale ���Ȃ��̂� Parser#setLocale() ���폜�B

�A�v���P�[�V�������ł� ParserFactory ���g�킸�� Parser �����𒼐� new ����B

SAX2 API
  • org.xml.sax �p�b�P�[�W����ȉ��̃N���X���c���Ă���ȊO�͍폜(MinML2 �ł͏C����)�B
    Attributes, ContentHandler, DTDHandler, EntityResolver, ErrorHandler, InputSource, Locator, SAXException, SAXNotRecognizedException, SAXNotSupportedException, SAXParseException, XMLReader
  • org.xml.sax.helpers �p�b�P�[�W�͑S���폜(MinML2 �ł͏C����)�B�ꍇ�ɂ���Ă� AttributesImpl, NamespaceSupport ���K�v��������Ȃ����A����e�X�g�����p�[�T�ł͕s�v�������B

�A�v���P�[�V�������ł� XMLReaderFactory ���g�킸�� XMLReader �����𒼐� new ����B

XML Pull API
  • org.xmlpull.v1 �p�b�P�[�W�� XmlPullParserFactory, XmlSerializer ���폜�B

�A�v���P�[�V�������ł� XmlPullParserFactory ���g�킸�� XMLPullParser �����𒼐� new ����B

MXP1
  • String#intern() �����Ȃ��悤�ɂ���B����͖��O��� URL �̔�r�Ɏg���Ă���̂ŁA���O��Ԃ̎g�p�Ŗ�肪���邩������Ȃ����A����̃e�X�g�ł͊m�F���Ă��Ȃ��B
kXML2
  • org.kxml2.kdom �p�b�P�[�W���폜(�p�[�X�ɂ͕s�v)�B
  • org.kxml2.wap �p�b�P�[�W���폜(�p�[�X�ɂ͕s�v)�B
  • org.kxml2.io �p�b�P�[�W�� KXmlSerializer ���폜�B
MinML1
  • uk.org.xml.sax.Parser#setLocale() ���폜�B
NanoXML2/Lite
  • J2ME �ɂ� StringReader, CharArrayReader ���Ȃ��̂� String �� char[] ����p�[�X���邽�߂̃��\�b�h�� nanoxml.XMLElement ����폜�B
  • J2ME �ɂ� double �^���Ȃ��̂ŁAdouble �l�� get/set ���郁�\�b�h�� nanoxml.XMLElement ����폜�B
  • J2ME �ɂ� Object#clone() ���Ȃ��Bclone() ���g���Ă��� nanoxml.XMLElement#getChildren() ���폜�B�p�[�X�ɂ͉e���͂Ȃ��B�m�[�h�ւ̃A�N�Z�X�ɂ� enumerateChildren() ���g���B
TinyXML
  • gd.xml.tiny �p�b�P�[�W���폜�B����� tree based �ȃp�[�T�p�Ȃ̂� event based �ȃp�[�T���g���ꍇ�͕s�v�B
  • J2ME �ł� java.lang.Character ���� isLetter(), isLetterOrDigit() ���폜����Ă���B�����̃��\�b�h���������� MyCharacter �N���X�����Agd.xml.XMLParser ���� Character �� MyCharacter �ɒu��������B
  • �󔒕������̂Ă�o�O���C�����邽�߂� XMLParser.java �� 825 �s��
      readWhite();
    ���A
      if(inEpilog || inProlog) readWhite();
    �ɒu��������B
  • gd.xml.XMLReader �� String#intern() ���g���Ă��镔�����g��Ȃ��悤�ɏC������B
Min
  • J2ME �ɂ� CharConversionException �͂Ȃ��̂� com.docuverse.min.UTF-8 �ł͂���̂����� IOException �� throw ����BParser.java �̊Y������ catch �߂͍폜�B
  • com.docuverse.min.Parser#parse(String, boolean) ���폜�B
  • com.docuverse.min.Parser#parse(String) �� parse(InputSorce) ���ĂԂ悤�ɏC���B
  • com.docuverse.min.Parser#parse(InputSource, boolean) �œ��͂��t�@�C���̎��� IOException �� throw ����悤�ɏC���B
  • com.docuverse.min.Parser ���� Locale �֌W�̃R�[�h���폜�B
  • com.docuverse.min �p�b�P�[�W���� SAXParserFactoryImpl, SAXParserImple ���폜�B
  • com.docuverse.min.util �p�b�P�[�W���폜�B
  • Minimizer �� SJIS �������o�͂������ꍇ�͔� ASCII �����𕶎��Q�Ƃɂ��Ȃ��悤�ɁAMinimizer.java �� 221 �s�ڂ�
      text.append("&#");
      text.append(c);
      text.append(";");
    ���A
      text.append(ch[i]);
    �ɒu��������B