0

私は現在、XML / HTMLパーサーに取り組んでいますnode.js(興味がある場合:link)。要点を正しく説明しましょう。処理命令内の先頭の空白をどのように処理するかを知る必要があります。これらは等しくなければなりませんか?

  1. <?asdf ?>
  2. < ?asdf ?>
  3. <? asdf ?>
  4. < ? asdf ?>

厳密なXMLは最初のものだけを許可すると思います(しかし、期待される動作は何ですか?検証したくない、可能な限り多くの構成を受け入れたい)、それはより哲学的な質問です。

前もって感謝します!

4

1 に答える 1

0

XML仕様によれば、最初の表現のみが許可されます。他の表現はエラーになるはずだと思います。

いくつかの前処理を追加して、無効な構成をクリーンアップし(空白を削除)、データをXMLとして読み取ることができます。

このプリプロセッサは、データがXMLパーサーに到達する前にデータをクリーンアップします。これは、別のプログラムである可能性があります。そうすれば、XMLパーサーは、入力データが中途半端に有効な場合にのみ、有効なXML(解析する特殊なケースが少ない)を取得します。それでもパーサーでエラーが発生する場合は、入力がXML風ではなかったと考えられます。

したがって、たとえば、前処理中にデータが変更され、最終的にXMLとして解析されます。偽の空白を削除する(1つのプリプロセッサ)→終了タグを推測する(他のプリプロセッサ)→XMLとして解析する

許可された構成の質問は、できる限り受け入れるためのステートメントによって回答されます。これは、aの後にあるすべての空白を削除する場合であるため、次<の場合は?、次の単語まで空白を削除してから、XMLとして解析します。

個人的には、ほとんどの構成を受け入れることは望ましくないと思います。データにエラーが含まれている場合は、そのように処理する必要があります。

于 2011-12-11T13:05:12.227 に答える