我需要在XSD中写入或传导。 例如,memberName可以是companyName或firstName或middleName或lastName。 xml文档中应该存在任何一个名称/像任何一个名称在XML中是必需的。
<xs:element name="memberName" nillable="false">
<xs:complexType>
<xs:sequence>
<xs:element name="companyName" type="xs:string"/>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="middleName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
完成XSD
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<xs:schema targetNamespace="http://hidden"
xmlns:tns="http://hidden" xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.2.0">
<xs:element name="accountNumber" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
<xs:pattern value="[0-9]" />
<xs:whiteSpace value="collapse" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="memberName" nillable="false">
<xs:complexType>
<xs:sequence>
<xs:element name="companyName" type="xs:string"/>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="middleName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="effectiveDate" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
<xs:whiteSpace value="collapse" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
如何在XSD中编写限制或OR传导。
感谢您的帮助。
答案 0 :(得分:1)
我认为你的意思是xs:choice
,但我还不确定。
<xs:element name="memberName" nillable="false">
<xs:complexType>
<xs:choice>
<xs:element name="companyName" type="xs:string"/>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="middleName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:element>
这需要memberName
元素包含companyName
,firstName
,middleName
或lastName
的一个。< / p>
但我确信大多数人都有名字和姓氏,那么
怎么样<xs:choice maxOccurs="4">
这将允许几个子元素,但也有几个相同类型。