Я хотел бы достичь сценария, показанного ниже, в котором у меня есть один и тот же элемент (в данном случае компонент) с разными родителями. Я хочу добавить ограничение только на первый уровень <<strong> component >. Например, я хочу добавить ограничение, согласно которому цвет (под компонентами) может быть только желтым или зеленым, а цвет в <<strong> component-set > может быть любым.
<components>
<component color="yellow"/>
<component color="green"/>
<component-set>
<component color="black"/>
</component-set>
</xs:complexType>
</components>
это мой текущий xsd, и я не должен редактировать сложный тип или имя элемента.
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://../custom.xsd" xmlns="http://../custom.xsd">
<xs:complexType name="componentType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="color" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="component-setType" mixed="true">
<xs:sequence>
<xs:element type="componentType" name="component" maxOccurs="unbounded" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="componentsType">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element type="componentType" name="component"/>
<xs:element type="component-setType" name="component-set"/>
</xs:choice>
</xs:complexType>
</xs:schema>