如何在XML模式中执行互斥属性?
发布时间:2020-12-16 07:55:43 所属栏目:百科 来源:网络整理
导读:我试图使两个XML属性相互排斥.如何创建XSD模式来捕获这种场景? 我想要有一个 elem value="1" /elem ref="something else" / 但不是 elem value="1" ref="something else" / 由于在Alnitak的答案中提到了 RelaxNG,这里是一个解决方案 与RelaxNG(一种在大多数
我试图使两个XML属性相互排斥.如何创建XSD模式来捕获这种场景?
我想要有一个 <elem value="1" /> <elem ref="something else" /> 但不是 <elem value="1" ref="something else" />
由于在Alnitak的答案中提到了
RelaxNG,这里是一个解决方案
与RelaxNG(一种在大多数情况下比W3C更好的语言) 架构).在elem的定义中记下OR(|): start = document document = element document {elem+} elem = element elem {ref | value} ref = attribute ref {text} value = attribute value {xsd:integer} 如果我有这个XML文件: <document> <elem value="1" /> <elem ref="something else" /> </document> rnv和xmlint接受: % rnv attributes-exclusive.rnc attributes-exclusive.xml attributes-exclusive.xml % xmllint --noout --relaxng attributes-exclusive.rng attributes-exclusive.xml attributes-exclusive.xml validates 如果我添加XML文件: <elem value="1" ref="something else" /> 我得到验证错误,我想要(请注意错误消息 % rnv attributes-exclusive.rnc attributes-exclusive.xml attributes-exclusive.xml attributes-exclusive.xml:4:0: error: attribute ^ref not allowed required: after % xmllint --noout --relaxng attributes-exclusive.rng attributes-exclusive.xml attributes-exclusive.xml:4: element elem: Relax-NG validity error : Invalid attribute value for element elem attributes-exclusive.xml fails to validate (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |