0

我使用 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> &lt;Errors&gt; { for $ab in //XDATA/ab, $bc in $ab/bc   where ($ab/@country = "USA" or $ab/@country = "BE") and (empty($bc))  return (: Query output :) &lt;Error ln="{$ab/@ln}"&gt; &lt;Case&gt; { data($ab/@countryid) } &lt; &lt;/Error&gt; } &lt;/Errors&gt; </XQuery> </Check> 

非常感谢提前BM

4

1 回答 1

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 ()
于 2013-08-01T14:38:33.030 回答