Xml XSD验证-如果父元素存在,则将子元素设为必填项,否则将子元素设为可选项
我有一个xml,看起来像: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
<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失败。事实并非如此,因为只有当父标记存在时才会进行验证。这将解析查询。谢谢大家的宝贵建议。干杯