我使用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
答案 0 :(得分:0)
请查看XQUERY示例,了解如何检查预期的情况:
let $x := <ab country="USA"><bc>dsfdsfsd</bc></ab>
let $USA := if($x[@country="USA"][bc]) then "Yes" else "No"
let $DE := if($x[@country="DE"][bc or not(bc)]) then "Yes" else "No"
return
if($USA="Yes" or $DE="Yes")
then "Yes"
else
if($USA="No" or $DE="No")
then "No"
else ()