ウィキペディアに以下の点が記載されていました。
古いノードで受信された新しいメッセージ要素は安全にスキップでき、残りのメッセージは解析できます。これは、不明な XML タグを安全にスキップできる方法と似ています。
例: 電話をかけるメッセージを想像してください。システムの最初のバージョンでは、これは「command」と「phoneNumberToCall」の 2 つのメッセージ要素を使用する場合があります。
command_c/4/makeCall_c/phoneNumberToCall_c/8/"722-4246" ここで、command_c、makeCall_c、および phoneNumberToCall_c は整数定数で、4 と 8 はそれぞれ「値」フィールドの長さです。
後で (バージョン 2 で) 発信者番号を含む新しいフィールドを追加できます: command_c/4/makeCall_c/callingNumber_c/8/"715-9719"/phoneNumberToCall_c/8/"722-4246"
バージョン 2 システムからメッセージを受信したバージョン 1 システムは、最初に command_c 要素を読み取り、次に、callingNumber_c タイプの要素を読み取ります。
バージョン 1 システムは ;callingNumber_c を理解しないため、長さフィールド (つまり最初の 8) が読み取られ、システムは 8 バイト前方にスキップして、理解できる phoneNumberToCall_c を読み取り、メッセージの解析が続行されます。
タイプ フィールドがないと、バージョン 1 のパーサーは、callingNumber_c をスキップすることを認識せず、代わりに間違った番号を呼び出し、メッセージの残りの部分でエラーをスローする可能性があります。そのため、type フィールドは、それを省略しない方法で前方互換性を可能にします。