XML Schema - 依赖于可选属性存在的子元素

Aoi*_*asu 5 xml validation xsd

是否可以在XSD中定义以下场景:

  1. 父元素具有一个属性

    是可选的.

  2. 如果属性不是

    present in XML, at least one child
    
    element must exists.
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果

    attribute is present, there can be
    
    zero or more child elements.
    
    Run Code Online (Sandbox Code Playgroud)

例:

有效

<parent externel-source="some_name" />



<parent externel-source="some_name">

  <child>some value</child>

</parent>



<parent>

  <child> some value</child>

</parent>
Run Code Online (Sandbox Code Playgroud)

无效

<parent />
Run Code Online (Sandbox Code Playgroud)

par*_*cle -4

不,我认为不是。

  • XML 模式类型与 OO 编程类型非常相似。您可以创建复杂类型,并且可以限制元素和属性的元素类型的顺序以及可以分配的值类型的限制。这就是 xsd 能为您做的一切。您想要的是跨越多个元素/属性的某种约束,这对于 xsd 来说是不可能的。您必须编写自己的代码来验证这一点。 (2认同)