2

背景

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

问题

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

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


我做了什么:

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

4

2 回答 2

2

正如@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 规范并根据需要添加元素和属性。一个快速的谷歌搜索出现了以下

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

于 2012-05-17T19:13:08.140 回答
2

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

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

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

于 2012-06-16T23:19:04.790 回答