使用 externalRef 引用 RelaxNG 模式中的特定元素
因此,我有一个 RelaxNG 模式引用另一个模式:
<define name="review">
<element name="review">
<externalRef href="other.rng"/>
</element>
</define>
other.rng:
<start>
<choice>
<ref name="good"/>
<ref name="bad"/>
</choice>
</start>
<define name="good">
<element name="good"/>
</define>
<define name="bad">
<element name="bad"/>
</define>
有什么办法可以只导入
,但不允许导入
?目标是:
<review><good/></review>: valid
<review><bad/></review>: invalid
So I have one RelaxNG schema that references another:
<define name="review">
<element name="review">
<externalRef href="other.rng"/>
</element>
</define>
other.rng:
<start>
<choice>
<ref name="good"/>
<ref name="bad"/>
</choice>
</start>
<define name="good">
<element name="good"/>
</define>
<define name="bad">
<element name="bad"/>
</define>
Is there any way I can import only <good>
, but not allow <bad>
? The goal being:
<review><good/></review>: valid
<review><bad/></review>: invalid
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
externalRef
导入的语法无法修改。为了实现您想要的验证类型,我看到了这种方法:start
元素(good
和bad
元素不可能是根)。规范说:
review
定义中引用了good
元素。The grammar you import with
externalRef
can't be modified. To achieve the kind of validation you're after, I see this method :start
element in the include (good
andbad
elements won't be possible root).The specification says :
good
element in yourreview
definition.