据我所知,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