html - 格式丰富的内容用什么标记语言?

当您正在开发基于 Web 的应用程序并希望允许来自用户的格式丰富的文本时,您必须选择如何允许该输入。已经创建了许多不同的标记语言,因为可以说清理 HTML 更加困难。

各种不同标记语言的优缺点是什么,例如:

  • HTML
  • Markdown
  • BBCode
  • Textile
  • MediaWiki markup
  • other

或者换句话说,您在选择使用特定标记语言时会考虑哪些因素。

最佳答案

Markdown、BBCode、Textile、MediaWiki 标记基本上都是相同的通用概念,所以我真的只是将其归为两类:HTML 和纯文本标记。

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 文档等),并且您不担心对其进行转换或对其进行 future 验证,那么将其存储在 HTML 中是一种合理的做法。

https://stackoverflow.com/questions/342961/

相关文章:

r - 如何在 R Shiny 中对数据帧进行条件格式设置?

r - 通过带有条件格式的 xlsx 将数据框导出到 Excel

powershell - 在 PowerShell 中导出为 CSV 时如何指定列顺序?

php - 保持我的 PHP 漂亮

url - 查询字符串中是否有任何格式约定?

c++ - 使用 Visual Studio 进行高级 (C++) 源代码重新格式化?

xcode4 - XCode 4 注释格式(换行)

javascript - 使用纯 JavaScript 将电话号码格式化为用户类型

arrays - 填充表格数据的打印输出

string - 固定宽度数字格式化python 3