據我所知,XML是SGML的一個子集,旨在簡化它並鼓勵更廣泛的使用。我覺得最有用的特性被引入到了XML中,但是SGML中有沒有足夠強大的特性來激發它的使用而不是XML(並且接受複雜的開銷)?是否有任何理由使用SGML而不是XML?
6
A
回答
8
SGML的一個優點是,如果你手動編輯它,你可以用各種方式縮寫標籤。你能做什麼取決於你正在使用的DTD的SGML聲明。例如,在DocBook中,您可以編寫像< literal> foo < />。在HTML中,您可以省略結束標籤,這就是爲什麼您可以在不關閉標籤的情況下寫入< p> foo ... < p> bar。或者你可以完全忽略標籤,這就是爲什麼< body>在HTML中是可選的。
但是XML的發明正是因爲所有這些變體使解析SGML變得相當複雜。你現在可能會發現比SGML編輯更能勝任的XML編輯器。
就處理而言,兩種形式都是等價的,因爲您可以來回轉換,除非在某些角落情況下。
1
除非您有特定的應用程序,否則無法回答。您可以使用SGML獲得更好的索引和搜索,但是我沒有發現它比XML更好的選擇。我確定他們在那裏,我只是沒有找到他們。
獲勝因素是XML多個平臺上的渲染成熟度。 SGML不存在相同的兼容性。但是,如果您可以控制環境,那可能不是一個因素。 XML似乎只提供了90%的功能,但複雜程度要低得多。
2
否。使用SGML的唯一原因是如果您在出版行業工作,其中SGML已經是生產流程的一部分。 (可能有其他行業,但這是我唯一有經驗的行業)。
另一種看待這種情況的方法是,即使SGML中有一些不錯的功能,除非您可以使用SGML清楚地顯示財務利益(請參閱「發佈行業」),否則不值得爲工具付費。
相關問題
- 1. C++:是否有任何理由使用uint64_t,而不是size_t
- 2. 是否有任何理由使用Apache HashCodeBuilder而不是Objects.hash?
- 3. 是否有任何理由使用[:over @:?
- 4. 是否有任何理由使用isset()?
- 5. 是否有任何理由使用System.Uri?
- 6. 是否有任何理由使用RabbitMQ而非Kafka?
- 7. 是否有任何理由使用按鈕元素而不是span元素?
- 8. 是否有任何充分的理由使用Json而不是obj for Three.js
- 9. 是否有任何理由在C++ 1z中使用std :: map :: emplace()而不是try_emplace()?
- 10. 是否有任何理由使用這個Regex方法而不是String.IsNullOrEmpty()?
- 11. 是否有任何理由使用CSS陰影而不是陰影?
- 12. 是否有任何理由使用一個DataContext實例,而不是幾個?
- 13. 是否有理由總是使用對象而不是基元?
- 14. 是否有理由不使用Pressflow而不是Drupal 6?
- 15. 是否有理由使用vanilla Pure Data而不是Pd-Extended?
- 16. 是否有理由使用$ scope。$ apply而不是$ applyAsync?
- 17. 是否有理由使用常量而不是消息?
- 18. 是否有充分的理由使用CassiniDev而不是VS WebServer?
- 19. 是否有理由在布爾值上使用&=而不是= =?
- 20. 是否有任何理由不使用INLINABLE pragma作爲函數?
- 21. 是否有任何理由不使用Boost :: shared_ptrs?
- 22. 是否有任何理由不使用resource.getInputStream()?
- 23. 是否有任何理由Object.freeze函數?
- 24. 是否有任何理由選擇開始學習Winforms而不是WPF?
- 25. 是否有任何理由選擇迭代算法而不是遞歸算法
- 26. 是否有任何理由在C#中使用私有屬性?
- 27. 是否有任何理由不總是使用AtomicInteger作爲數據成員?
- 28. 是否有任何理由不使用src =「// domain.com/file.js」,協議是動態的?
- 29. 使用compose()而不是lambda表達式的任何理由?
- 30. Java - 是否有任何理由檢查單例是否爲空?
Nrrgh,需要一個+2按鈕......! (一個很好的解釋+1;真棒瑣事+1!) – pinkgothic 2010-08-26 10:23:23