Это один из возможных способов определить XSD, соответствующий вашему XML; изучая XSD, вы можете воспользоваться помощью инструмента, который выведет для вас XSD, начиная с одного или нескольких файлов примеров XML.
<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="component">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="operation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="input">
<xsd:complexType>
<xsd:attribute name="type" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="event">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="output">
<xsd:complexType>
<xsd:attribute name="type" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="type" type="xsd:string" use="required" />
<xsd:attribute name="binding" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
По мере прохождения этого процесса вы можете начать настройку min / maxOccurs, использовать (обязательно / необязательно), повторно использовать определения и т. Д. Сгенерированный XSD является хорошей отправной точкой, но, как правило, в конечном итоге редактируется так или иначе ...