2011-12-11 65 views
0

我目前正在致力於一個XML/HTML解析器node.js(如果您感興趣:link)。讓我明白正確:我需要知道如何處理處理指令中的主要空白。這些應該相等嗎?XML處理指令和空白

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

我猜嚴格的XML將只允許第一個(但什麼是預期的行爲呢?我不想驗證,我想接受我可以構建的最多結構),這更多的是一個哲學問題。

在此先感謝!

回答

0

根據the XML specification只允許第一個表示。我會說其他表示應該會導致錯誤。

您可以添加一些預處理來清理無效構造(刪除空白),然後將數據作爲XML讀取。

這個預處理器會在你的數據到達你的XML解析器之前清理你的數據 - 它可能是另一個程序。這樣,如果輸入數據是一半有效的,那麼您的XML解析器只會得到有效的XML(解析的特殊情況較少)。如果您的解析器仍然遇到錯誤,那麼您會認爲輸入不是XML-ISH。

因此,例如,在預處理數據將被改變,最後解析爲XML: 刪除虛假空白(一個預處理器)→猜→解析結束標記(其他預處理)作爲XML

的問題允許的構念通過您的陳述回答儘可能多地接受。因爲在這種情況下,您會刪除<之後的所有空白,如果遵循?,則再次刪除空白直到下一個單詞 - 然後解析爲XML。

就我個人而言,我不認爲接受大多數構造是可取的。如果您的數據包含錯誤,則應該按照這種方式處理。

+0

正如我寫的:我不想驗證,因此,應該避免錯誤。預處理是什麼意思?應該允許哪些構造? – fb55