<?xml version="1.0" encoding="UTF-8" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">

    <!-- Inclusion of other Building Blocks -->
    <xs:include schemaLocation="https://www.omg.org/spec/DDS-XML/20260301/dds-xml_node_definitions_nonamespace.xsd" />
    <xs:include schemaLocation="https://www.omg.org/spec/DDS-XML/20260301/dds-xml_application_definitions_nonamespace.xsd" />
    <xs:include schemaLocation="https://www.omg.org/spec/DDS-XML/20260301/dds-xml_configuration_tsn_definitions_nonamespace.xsd" />

    <!-- Node definitions -->
    <xs:complexType name="applicationRef">
        <xs:attribute name="name" type="elementName" use="required" />
        <xs:attribute name="application_ref" type="elementNameReference" use="required" />
    </xs:complexType>
    <xs:complexType name="nodeRef">
        <xs:attribute name="node_ref" type="nodeElementNameReference" use="required" />
    </xs:complexType>
    <xs:complexType name="applicationList">
        <xs:sequence minOccurs="1" maxOccurs="unbounded">
            <xs:element name="application" type="applicationRef" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="deploymentConfiguration">
        <xs:sequence>
            <xs:element name="tsn" type="tsnConfiguration"  minOccurs="0" />
            <!-- 
            <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            -->
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="deployment">
        <xs:all>
            <xs:element name="node" type="nodeRef" minOccurs="1"/>
            <xs:element name="applications" type="applicationList" minOccurs="1"/>
            <xs:element name="configuration" type="deploymentConfiguration" minOccurs="0"/>
        </xs:all>
        <xs:attribute name="name" type="elementName" use="required" />
    </xs:complexType>
    <xs:complexType name="deploymentScenario">
        <xs:choice minOccurs="1" maxOccurs="unbounded">
            <xs:element name="deployment" type="deployment" />
        </xs:choice>
        <xs:attribute name="name" type="elementName" use="required" />
        <xs:attribute name="base_name" type="elementNameReference" use="optional" />
    </xs:complexType>

    <!-- Deployment Library Definition -->
    <xs:complexType name="deploymentLibrary">
        <xs:choice minOccurs="1" maxOccurs="unbounded">
            <xs:element name="deployment_scenario" type="deploymentScenario" />
        </xs:choice>
        <xs:attribute name="name" type="elementName" use="required" />
    </xs:complexType>
</xs:schema>
