是否有定义好的原子订阅 XML 模式?
RFC 4287 只在附录 B 中包含了一个 Relax NG 紧凑模式。
http://www.kbcafe.com/rss/atom.xsd.xml (由于原始版本已不再可用,此处为Web Archive版本)
http://www.kbcafe.com/rss/atom.xsd.xml不应该被使用,因为它甚至不能检测到缺少的<id>
标签。
https://tools.oasis-open.org/version-control/browse/wsvn/cmis/trunk/SchemaProject/schema/ATOM.xsd存在问题,xmllint
使用它时会报错:
复杂类型 'atomPersonConstruct': 内容模型不是确定性的。
RFC包含一个relax ng compact规范:https://validator.w3.org/feed/docs/rfc4287.html#rfc.section.B
借助于trang
,可以将该.rnc
文件从紧凑格式转换为基于XML的.rng
文件。然后可以将其与xmllint
一起使用:
$ xmllint --noout --relaxng atom.rng feed.atom
feed.atom:4: element feed: Relax-NG validity error : Expecting an element updated, got nothing
feed.atom:16: element entry: Relax-NG validity error : Invalid sequence in interleave
feed.atom:16: element entry: Relax-NG validity error : Element feed failed to validate content
feed.atom fails to validate