Понятие зависимостей (которые вы называете «связыванием») в XML управляется через вложение. Поэтому, если вы хотите, чтобы два поля зависели друг от друга, вы должны определить их как обязательные атрибуты вложенного необязательного элемента.
Так что, если у вас есть полный контроль над структурой схемы, вы можете сделать что-то вроде этого:
<customer id="1">
<contact city="Gotham" phone="batman's red phone" />
</customer>
Если элемент contact
является необязательным в customer
, но city
и phone
обязательны в contact
.
Соответствующий XSD для этой структуры будет выглядеть примерно так:
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="contact" minOccurs="0">
<xs:complexType>
<xs:attribute name="city" type="xs:string" use="required"/>
<xs:attribute name="phone" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>