Xml XSD验证-如果父元素存在,则将子元素设为必填项,否则将子元素设为可选项

Xml XSD验证-如果父元素存在,则将子元素设为必填项,否则将子元素设为可选项,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,我有一个xml,看起来像: <RawData> <EmailAddress>xyz.abc@email.com</EmailAddress> <PassengerName>XYZ/ABC</PassengerName> </RawData> xyz。abc@email.com XYZ/ABC 对应的XSD如下所示: <xsd:element

我有一个xml,看起来像:

<RawData>
                  <EmailAddress>xyz.abc@email.com</EmailAddress>
                  <PassengerName>XYZ/ABC</PassengerName>
</RawData>

xyz。abc@email.com
XYZ/ABC
对应的XSD如下所示:

<xsd:element name="RawData" minOccurs="0" maxOccurs="1">
                    <xsd:complexType>
                        <xsd:sequence>
                        <xsd:element name="EmailAddress" minOccurs="0" maxOccurs="1">
                    </xsd:element>
                        <xsd:element name="PassengerName" minOccurs="0" maxOccurs="1"/>
</xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>

如果存在RawData,我需要将PassengerName设置为必填项,否则为可选项

请帮忙提建议


提前感谢。

如果父元素不存在,则不会验证它,因此该元素的架构定义没有相关性。如果父母缺席,孩子们将永远缺席,模式自动允许他们缺席。

如前所述,你的问题没有意义。PassengerName是RawData的子项,因此,除非RawData存在,否则无法显示。也许你想重新措辞这个问题。谢谢你。我应该说得更清楚些。RawData是另一个父标记的子标记,使RawData成为可选标记。如果我将PassengerName设置为始终强制的,那么如果RawData不存在,它将始终使用PassengerName。因此,要求是将PassengerName与RawData绑定,这样当RawData存在时,PassengerName是强制性的,否则是可选的。啊,所以
PassengerName
可以是
RawData
的父项的子项,而
RawData
不存在?这与要求有些混淆。事情现在清楚了。由于父标记将始终与子标记相关联,因此我将子标记设置为必需的。感觉是,如果缺少父标记,则无论是否将子标记作为强制项,都会使xml失败。事实并非如此,因为只有当父标记存在时才会进行验证。这将解析查询。谢谢大家的宝贵建议。干杯