我使用 XQuery 对 XML 文件进行后 XSD 验证。我在文件中有一个层次结构,因此“ab”标签可以有一个子元素“bc”,但仅适用于“ab”标签中的某些属性值。如果 "ab" 中的 country 属性是 USA,那么我们需要有子元素 "bc",但是当 country 是 DE 时,可以省略 "bc" 子元素。这如何在 XSD 和 XQuery 中或组合中完成?
下面是我试过的代码:
我使用 xpath:
<Check id="1" type="XQuery" title="bc 0) 'bc must be provided for country USA and BE but not for for DE'"> <XQuery> <Errors> { for $ab in //XDATA/ab, $bc in $ab/bc where ($ab/@country = "USA" or $ab/@country = "BE") and (empty($bc)) return (: Query output :) <Error ln="{$ab/@ln}"> <Case> { data($ab/@countryid) } < </Error> } </Errors> </XQuery> </Check>
非常感谢提前BM