我正在为
XML文件编写RelaxNG Compact模式,其中< wrap>的内容.元素必须是以下之一:
<wrap><a/></wrap> <wrap><b/></wrap> <wrap><a/><b/></wrap> <wrap><b/><a/></wrap>
在英语中,< a />或< b />每个都允许一次,或者两者都允许,但是其中一个必须存在.
是否有比以下更好(更紧凑)的WrapElement定义?
grammar { start = element wrap { WrapElement } WrapElement = ( element a {empty},element b {empty}? )|( element a {empty},element b {empty}? ) }
以下是关闭.它肯定更简洁,它匹配所有允许的变化,并且不允许元素多次出现.但是,它也错误地允许空的< wrap />元件:
grammar { start = element wrap { WrapElement } WrapElement = element a {empty}? & element b {empty}? }
解决方法
以下适用于我:
grammar { start = element wrap { (a|b)|(a&b) } a = element a {empty} b = element b {empty} }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。