【问题标题】:Validating XHTML5 in PHP?在 PHP 中验证 XHTML5?
【发布时间】:2011-11-11 21:33:31
【问题描述】:

背景

我已决定将我的网站作为application/xhtml+xml 提供给任何愿意接受它的人。我明白会有后果,我愿意接受这些后果。

问题

我正在尝试在 PHP 中验证 XHTML5。这样,如果验证失败,我可以将文件作为text/html 提供(嘿,没有人是完美的)。不过,即使在我的情况之外,我的问题也是有价值的。

那么我有哪些选择来验证 XHTML5?


我做了什么:

我已经在我的源代码中使用 PHP 的 DOMDocument 作为模板形式,所以我希望能够使用 DOMDocument::relaxNGValidateDOMDocument::schemaValidate。我既找不到.xsd 也找不到.rng 使用。不过,我想我已经找到了一个directory to make an rng grammar 了。在今天之前,我什至从未听说过 Relax NG。对这个方向有帮助吗?

【问题讨论】:

  • 事后看来,我很仓促,您将其退回是正确的。很抱歉给您带来麻烦。
  • 看看w3c验证器源代码validator.w3.org/source怎么样,不知道有没有帮助。
  • 至少你应该知道,生产了什么,所以在我看来,这样的验证过程只对测试感兴趣(在发布之前等)。
  • @KingCrunch 如果我生成的代码破坏了 XML,那么当我发送 application/xhtml+xml 时,客户端只会破坏它。那不是很好。为他们服务text/html 标签汤要好得多。因此自动验证。我们确实有一些(非常少)用户提交的内容,这主要影响本节。
  • 在我看来,您只需要确保 XML 是有效的 XML,如果不是,您可以将其发送为 text/html。这是一个正确的假设吗?

标签: php domdocument xml-validation relaxng html


【解决方案1】:

正如@Kevin Peno 所指出的,HTML5 不是 XML,虽然这最初让我感到不快,但我已经接受了它并决定仅将 HTML5 作为最终输出格式,而不是带有通过 XML 工具再次使用和转换的潜力。

如果您想走这条路,我的建议是通过确保有效 XML 的清理过程传递您的 HTML5 标记(想到 Tidy 等工具)。

您的另一个选择是重新考虑您的方法并将 HTML 视为最终输出格式。使用不同的标记语言来存储内容,甚至可能是您网站的结构。

例如,您可以将 Markdown 用于内容(很容易转换为 HTML)。如果您更喜欢使用 XML,或许可以定义您自己的 DSL,或者重用一个,例如 Simplified DocBook。过去这对我来说效果很好。

然后利用 XSL 将您的 XML 混搭转换为 HTML5 或您喜欢的任何输出格式。

现在,要尝试直接回答您的问题,您肯定需要在使用诸如 RelaxNG 或 XML Schema 之类的验证工具之前“整理” HTML5 标记以确保它是有效的 XML。至于您的 RNG 模式文件,我建议先查找 XHTML 1.0 Strict .rng,然后仔细阅读 HTML5 规范并根据需要添加元素和属性。一个快速的谷歌搜索出现了the following

如果您在 RNG 和 XML Schema 之间做出选择,请省去一些麻烦,然后使用 RelaxNG。这是我的观点,但我已经广泛使用了这两种方法,而且 RelaxNG 更易于阅读且更易于使用!

【讨论】:

    【解决方案2】:

    new (Nu) HTML5 Validator 具有 RELAX NG 架构,适用于各种预设,包括 XHTML5

    https://bitbucket.org/validator/syntax/src/ed90a83ab0fd/relaxng https://github.com/validator/validator/tree/master/syntax/relaxng

    这是你要找的还是我很困惑?

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2012-04-21
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多