XML仕様によれば、最初の表現のみが許可されます。他の表現はエラーになるはずだと思います。
いくつかの前処理を追加して、無効な構成をクリーンアップし(空白を削除)、データをXMLとして読み取ることができます。
このプリプロセッサは、データがXMLパーサーに到達する前にデータをクリーンアップします。これは、別のプログラムである可能性があります。そうすれば、XMLパーサーは、入力データが中途半端に有効な場合にのみ、有効なXML(解析する特殊なケースが少ない)を取得します。それでもパーサーでエラーが発生する場合は、入力がXML風ではなかったと考えられます。
したがって、たとえば、前処理中にデータが変更され、最終的にXMLとして解析されます。偽の空白を削除する(1つのプリプロセッサ)→終了タグを推測する(他のプリプロセッサ)→XMLとして解析する
許可された構成の質問は、できる限り受け入れるためのステートメントによって回答されます。これは、aの後にあるすべての空白を削除する場合であるため、次<
の場合は?
、次の単語まで空白を削除してから、XMLとして解析します。
個人的には、ほとんどの構成を受け入れることは望ましくないと思います。データにエラーが含まれている場合は、そのように処理する必要があります。