0

我有在 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 传导。

谢谢你的帮助。

4

1 回答 1

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的一个。firstNamemiddleNamelastName

但我敢肯定大多数人都有名字和姓氏,那么怎么样

<xs:choice maxOccurs="4">

这将允许几个子元素,但也允许几个相同的类型。

于 2016-01-05T17:09:28.400 回答