Xsd 如何在XML模式中指定字段依赖关系?

Xsd 如何在XML模式中指定字段依赖关系?,xsd,Xsd,这更像是一个一般的XML模式问题,但您是否以及如何指定 XML架构中的字段依赖关系。例如,我怎么说fieldB是 必填项,如果提供了fieldA???您可以使用和/或伪造此项。例如,您可以不允许任何内容、fieldB或fieldA和fieldB,但不能仅允许fieldA。这可能会导致重复,您可以通过定义complexType来防止重复。您可以使用和/或来伪造它。例如,您可以不允许任何内容、fieldB或fieldA和fieldB,但不能仅允许fieldA。这可能会导致重复,您可以通过定义comp

这更像是一个一般的XML模式问题,但您是否以及如何指定 XML架构中的字段依赖关系。例如,我怎么说fieldB是
必填项,如果提供了fieldA???

您可以使用和/或伪造此项。例如,您可以不允许任何内容、fieldB或fieldA和fieldB,但不能仅允许fieldA。这可能会导致重复,您可以通过定义complexType来防止重复。

您可以使用和/或来伪造它。例如,您可以不允许任何内容、fieldB或fieldA和fieldB,但不能仅允许fieldA。这可能会导致重复,您可以通过定义complexType来防止重复。

这类选择取决于“字段”在XML中的表示方式以及使用的XSD版本

如果fieldA和fieldB是元素,那么在适当的内容模型中包含以下形式的某些结构就可以了

<sequence minOccurs="0">
  <element ref="tns:fieldA" minOccurs="0"/>
  <element ref="tns:fieldB"/>
</sequence>
如果愿意,这两个元素引用可以按其他顺序显示。我不清楚为什么Erik Hesselink担心这会导致复制,或者他担心的是什么形式的复制

如果将字段B设为元素,将字段A设为可选项?属性,则要自动遵循的共现约束


如果将这两个属性都设置为属性,则XSD 1.0无法强制执行共现约束;有些人求助于Schematron来处理这样的事情。在XSD 1.1中,在这种情况下强制约束的选项包括xs:assert和条件类型赋值。

这类选项取决于“字段”在XML中的表示方式以及使用的XSD版本

如果fieldA和fieldB是元素,那么在适当的内容模型中包含以下形式的某些结构就可以了

<sequence minOccurs="0">
  <element ref="tns:fieldA" minOccurs="0"/>
  <element ref="tns:fieldB"/>
</sequence>
如果愿意,这两个元素引用可以按其他顺序显示。我不清楚为什么Erik Hesselink担心这会导致复制,或者他担心的是什么形式的复制

如果将字段B设为元素,将字段A设为可选项?属性,则要自动遵循的共现约束

如果将这两个属性都设置为属性,则XSD 1.0无法强制执行共现约束;有些人求助于Schematron来处理这样的事情。在XSD1.1中,在这种情况下强制约束的选项包括xs:assert和条件类型赋值