application/xhtml+xml
的身份向我的网站提供服务。我知道有后果,我愿意接受的后果。
text/html
提供(嘿,不是没有人完美)。不过,即使在我的情况之外,我的问题仍然有用。
那么我可以选择如何验证XHTML5?
我做了什么:
我已经在我的源代码中使用PHP的DOMDocument
作为模板形式,所以我希望能够使用DOMDocument::relaxNGValidate或DOMDocument::schemaValidate。我找不到.xsd
和.rng
来使用。但是,我想我找到了directory to make an rng grammar。在今天之前,我从未听说过Relax NG。这个方向有什么帮助吗?
答案 0 :(得分:2)
正如@Kevin Peno指出的那样,HTML5不是XML,虽然这最初让我误解了,但我已经接受了它并且决定只将HTML5作为最终输出格式,而不是可以通过XML工具重新使用和转换。
我的建议是,如果你想沿着这条路走下去,就是通过一个清理过程来传递你的HTML5标记,这个过程保证了有效的XML(Tidy等工具会浮现在脑海中)。
您的另一个选择是重新考虑您的方法并将HTML视为最终输出格式。使用不同的标记语言来存储内容,甚至可能存储您网站的结构。
例如,您可以使用Markdown作为内容(轻松转换为HTML)。如果您更喜欢坚持使用XML,可以定义自己的DSL,或者重用Simplified DocBook之类的DSL。这对我来说效果很好。
然后利用XSL将您的XML mash-up转换为HTML5,或任何您喜欢的输出格式。
现在,为了尝试直接回答您的问题,在使用诸如RelaxNG或XML Schema之类的验证工具之前,您肯定需要“整理”HTML5标记以确保它是有效的XML。至于你的RNG模式文件,我建议先找一个XHTML 1.0 Strict .rng,然后仔细阅读HTML5规范并根据需要添加元素和属性。快速谷歌搜索出现the following。
如果您要在RNG和XML Schema之间做出决定,请为自己省去一些麻烦,然后去RelaxNG。这是我的看法,但我已经广泛使用了它,而RelaxNG更易于阅读,更易于使用!
答案 1 :(得分: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
这是你正在寻找的还是我感到困惑?