xml – 任意顺序中的两个/两个元素的RelaxNG紧凑模式
发布时间:2020-12-16 22:58:16 所属栏目:百科 来源:网络整理
导读:我正在为 XML文件编写RelaxNG Compact模式,其中 wrap的内容.元素必须是以下之一: wrapa//wrapwrapb//wrapwrapa/b//wrapwrapb/a//wrap 在英语中, a /或 b /每个都允许一次,或者两者都允许,但是其中一个必须存在. 是否有比以下更好(更紧凑)的WrapElement定义
我正在为
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} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |