当您开发基于Web的应用程序并且希望允许来自用户的格式丰富的文本时,您必须选择如何允许该输入.已经创建了许多不同的标记语言,因为它可能更难以清理HTML.
各种不同标记语言的优点和缺点如下:
HTML
降价
BB代码
纺织品
MediaWiki标记
其他
或者换句话说,在选择使用特定标记语言时,您会考虑哪些因素.
Markdown,BBCode,Textile,MediaWiki标记基本上都是相同的一般概念,所以我真的把它归为两类:HTML和纯文本标记.
与HTML的交易是内容已经是Web内容的"可呈现"形式.这很棒,节省了处理时间,而且它是一种易于解析的语言.几乎所有语言中都有数十个库来处理HTML内容,转换为HTML或从HTML转换为其他格式等.主要的缺点是,由于早期网络日的标准松散,HTML可以变化很大,你可以在接受用户的HTML时,总是依赖于理智的输入.正如所指出的那样,整理或复制HTML通常非常困难,特别是因为它无法像XML那样遵循正常的标记规则(即不正确的标记是常见的).
由于以下原因,经常使用此类别:
易于从一个来源解析为多种形式 - PDF,HTML,RTF
如果以后需要,内容存储在可读的纯文本中(通常比原始HTML更容易阅读),而不是需要从HTML中提取
遵循特定的定义规则,其中HTML可能令人烦恼变量和非结构化
允许您强制使用内容格式的子集,这在许多情况下比仅仅允许完整HTML更合适
除了强制HTML的子集之外,还可以轻松清理输入并防止跨站点脚本问题等.
以抽象格式保存"原始"数据意味着在以后,如果您想要将站点从HTML 4转换为XHTML,则只需要更改解析代码.使用HTML格式的用户输入,您现在必须将所有HTML单独转换为XHTML,正如HTML Tidy所示,并不总是一项简单的任务.类似地,如果在某个时刻出现新的标记语言,或者您需要转换为替代格式(RTF,PDF,TeX),则抽象的受限制的文本格式化选项子集使得这一任务变得更加简单.
底线是用于用户输入的内容.如果您计划保留数据并且可能需要随机播放格式等,那么使用谨慎的抽象格式来存储信息是有意义的.如果您因任何原因需要手动处理原始数据,那么如果该格式易于人类阅读,则可获得奖励积分.如果您只是在网页中显示内容(或报告的HTML文档等),并且您不担心转换它或面向未来,那么将它存储在HTML中是合理的做法.
Jeff 讨论了 codinghorror.com的一些优缺点,而他们正处于组建SO的初始阶段.我认为这是值得一读的.