我的 XML(简化)是这样的:
<Actions>
<Action Id="1">
</Action>
<Action Id="2">
<DoSomething>
<ActionRef ActionId="1" /> <!-- valid -->
</DoSomething>
</Action>
</Actions>
ActionId
属性值引用元素的Id
属性值。Action
我已经在 XSD 中设置了外键约束,它可以正常工作。
我想防止外部字段中的自引用值,如下所示:
<Actions>
<Action Id="1">
</Action>
<Action Id="2">
<DoSomething>
<ActionRef ActionId="2" /> <!-- invalid -->
</DoSomething>
</Action>
</Actions>
当然,这可以很容易地在处理 XML 的应用程序中完成,如果我所要求的不可行,我会依靠它,但我更希望通过验证过程自动完成.
我尝试添加[not(@ActionId = ../@Id)]
到外键选择器 XPath 查询中,但这在该上下文中无效(我也不确定它是否正确)。除此之外,我不知道还能尝试什么,而且看起来网上很多人甚至在他们的 XSD 中设置了外键关系,更不用说防止这种情况了(我没有找到关于这个确切主题的内容)。