Xml 任意顺序的任意/两个元素的松弛压缩模式
我正在为XML文件编写一个RelaxNG Compact模式,Xml 任意顺序的任意/两个元素的松弛压缩模式,xml,relaxng,Xml,Relaxng,我正在为XML文件编写一个RelaxNG Compact模式,元素的内容必须正好是以下内容之一: 在英语中,或允许一次,或两次都允许,但其中一个必须出现 是否有比下面更好(更简洁)的包装定义 grammar { start = element wrap { WrapElement } WrapElement = ( element a {empty}, element b {empty}? )|( element a
元素的内容必须正好是以下内容之一:
在英语中,
或
允许一次,或两次都允许,但其中一个必须出现
是否有比下面更好(更简洁)的包装定义
grammar {
start =
element wrap { WrapElement }
WrapElement =
(
element a {empty},
element b {empty}?
)|(
element a {empty},
element b {empty}?
)
}
以下是接近。它当然更简洁,它匹配所有允许的变化,并且不允许元素多次出现。但是,它也错误地允许空的
元素:
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}
}