我目前正在致力於一個XML/HTML解析器node.js
(如果您感興趣:link)。讓我明白正確:我需要知道如何處理處理指令中的主要空白。這些應該相等嗎?XML處理指令和空白
<?asdf ?>
< ?asdf ?>
<? asdf ?>
< ? asdf ?>
我猜嚴格的XML將只允許第一個(但什麼是預期的行爲呢?我不想驗證,我想接受我可以構建的最多結構),這更多的是一個哲學問題。
在此先感謝!
我目前正在致力於一個XML/HTML解析器node.js
(如果您感興趣:link)。讓我明白正確:我需要知道如何處理處理指令中的主要空白。這些應該相等嗎?XML處理指令和空白
<?asdf ?>
< ?asdf ?>
<? asdf ?>
< ? asdf ?>
我猜嚴格的XML將只允許第一個(但什麼是預期的行爲呢?我不想驗證,我想接受我可以構建的最多結構),這更多的是一個哲學問題。
在此先感謝!
根據the XML specification只允許第一個表示。我會說其他表示應該會導致錯誤。
您可以添加一些預處理來清理無效構造(刪除空白),然後將數據作爲XML讀取。
這個預處理器會在你的數據到達你的XML解析器之前清理你的數據 - 它可能是另一個程序。這樣,如果輸入數據是一半有效的,那麼您的XML解析器只會得到有效的XML(解析的特殊情況較少)。如果您的解析器仍然遇到錯誤,那麼您會認爲輸入不是XML-ISH。
因此,例如,在預處理數據將被改變,最後解析爲XML: 刪除虛假空白(一個預處理器)→猜→解析結束標記(其他預處理)作爲XML
的問題允許的構念通過您的陳述回答儘可能多地接受。因爲在這種情況下,您會刪除<
之後的所有空白,如果遵循?
,則再次刪除空白直到下一個單詞 - 然後解析爲XML。
就我個人而言,我不認爲接受大多數構造是可取的。如果您的數據包含錯誤,則應該按照這種方式處理。
正如我寫的:我不想驗證,因此,應該避免錯誤。預處理是什麼意思?應該允許哪些構造? – fb55