<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <!--
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.Ansys.com/xml"
xmlns="http://www.Ansys.com/xml"
elementFormDefault="qualified"> -->
    <!-- MAIN DOCUMENT ELEMENT ######################################################################################## -->
    <xs:element name="AddinTemplates" type="AddinTemplatesType" />
    <!-- AddinTemplatesType ################################################################################# -->
    <xs:complexType name="AddinTemplatesType">
        <xs:sequence>
            <!-- must follow this order -->
            <xs:element name="ComponentTemplates" type="ComponentTemplatesType" />
            <xs:element name="SystemTemplates" type="SystemTemplatesType" />
            <xs:element name="Systems" type="SystemsType" />
            <xs:element name="HelpIds" type="HelpIdsType" />
            <xs:any minOccurs="0" />
            <!--this allows for additional elements to be added as needed-->
        </xs:sequence>
    </xs:complexType>
    <!-- this defines TransferTypes elements:-->
    <xs:complexType name="TransferTypeType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:anyAttribute />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <!-- Components ######################################################################################## -->
    <xs:complexType name="ComponentTemplatesType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="ComponentTemplate" type="ComponentTemplateType" />
        </xs:sequence>
    </xs:complexType>
    <!-- this defines InternalComponent elements:-->
    <xs:complexType name="ComponentTemplateType">
        <xs:all>
            <xs:element maxOccurs="1" name="CreateCommand" type="xs:string" />
            <xs:element maxOccurs="1" name="UpdateCommand" type="xs:string" />
            <xs:element maxOccurs="1" name="RefreshCommand" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="AboutToResetCommand" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="ResetCommand" type="xs:string" />
            <xs:element maxOccurs="1" name="CleanCommand" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="DuplicateCommand" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="DuplicateUserDataCommand" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="StatusQuery" type="xs:string" />
            <xs:element maxOccurs="1" name="SourcesChangedCommand" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="CanUseTransferQuery" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="DeletingContainerCommand" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="CanDuplicateQuery" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="ComponentPropertyDataQuery" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="InputLists" type="InputListsType" />
            <xs:element maxOccurs="1" name="EquivalentInputLists" type="EquivalentInputListsType" minOccurs="0" />
            <xs:element maxOccurs="1" name="OutputList" type="OutputListType" />
            <xs:element maxOccurs="1" name="TransferComponents" type="TransferComponentsType" minOccurs="0" />
            <xs:element maxOccurs="1" name="WillUsePendingQuery" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="WillBeUpdatedViaRsmQuery" type="xs:string" minOccurs="0" />
            <xs:element maxOccurs="1" name="RemoteSolvePermissionsQuery" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="ReportContentCreationCommand" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="DesignPointReportContentCreationCommand" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="GetEnvironmentForRsmDpUpdateQuery" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="GetEditorInitiatedRemoteUpdateInfoQuery" type="xs:string" minOccurs="0"/>
            <xs:element maxOccurs="1" name="GetRemoteUpdateMonitorFilesQuery" type="xs:string" minOccurs="0"/>
        </xs:all>
        <xs:attribute name="Id" type="xs:string" use="required" />
        <xs:attribute name="Deletable" type="xs:boolean" default="false" use="optional" />
        <xs:attribute name="Shareable" type="xs:boolean" use="required" />
        <xs:attribute name="Replaceable" type="xs:boolean" default="false" use="optional" />
        <xs:attribute name="Required" type="xs:boolean" use="required" />
        <xs:attribute name="IncludeInPartialUpdate" type="xs:boolean" use="optional" />
        <xs:attribute name="RefreshAfterPartialUpdate" type="xs:boolean" use="optional" />
        <xs:attribute name="DuplicateGroup" type="xs:string" use="optional" />
        <xs:attribute name="Image" type="xs:string" use="optional" />
        <xs:attribute name="ValidationCode" type="xs:string" use="optional" />
        <xs:attribute name="SolverType" type="xs:string" use="optional" />
        <xs:attribute name="DefaultTransferName" type="xs:string" use="optional" />
        <xs:attribute name="ShowOptionToAlwaysBePartOfDpUpdate" type="xs:boolean" use="optional"/>
        <xs:attribute name="CreateAllProvidesConnectionsToNewSystem" type="xs:boolean" use="optional"/>
    </xs:complexType>
    <!-- this defines Component output lists :-->
    <xs:complexType name="OutputListType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="Output" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
    <!-- this defines Component input lists :-->
    <xs:complexType name="InputListsType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="InputList" type="InputListType" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="InputListType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="MandatoryInput" type="ComponentInputType" />
            <xs:element minOccurs="0" maxOccurs="unbounded" name="OptionalInput" type="ComponentInputType" />
        </xs:sequence>
        <xs:attribute name="AllowEmptyInputs" type="xs:boolean" />
    </xs:complexType>
    <xs:complexType name="EquivalentInputListsType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="EquivalentInputList" type="EquivalentInputListType" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="EquivalentInputListType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="EquivalentInput" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
    <!-- Systems ######################################################################################## -->
    <xs:complexType name="SystemsType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="System" type="SystemType" />
        </xs:sequence>
    </xs:complexType>
    <!-- this defines System elements:-->
    <xs:complexType name="SystemType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Property" type="PropertyType" />
            <xs:element maxOccurs="unbounded" minOccurs="0" name="AdditionalInputs" type="AdditionalInputsType" />
            <xs:element maxOccurs="unbounded" minOccurs="0" name="AdditionalOutputs" type="AdditionalOutputsType" />
        </xs:sequence>
        <xs:attribute name="Caption" type="xs:string" use="required" />
        <xs:attribute name="Id" type="xs:string" use="required" />
        <xs:attribute name="Image" type="xs:string" use="required" />
        <xs:attribute name="SystemTemplateId" type="xs:string" use="required" />
        <xs:attribute name="LastComponent" type="xs:string" use="optional" />
        <xs:attribute name="Beta" type="xs:boolean" use="optional" />
        <xs:attribute name="Visible" type="xs:boolean" use="optional" />
        <xs:attribute name="ShowInToolboxByDefault" type="xs:boolean" use="optional" />
        <xs:attribute name="Abbreviation" type="xs:string" use="required" />
        <xs:attribute name="ValidationCode" type="xs:string" use="optional" />
        <xs:attribute name="FeatureFlag" type="xs:string" use="optional" />
        <xs:attribute name="ToolboxGroup" type="xs:string" use="required" />
    </xs:complexType>
    <!-- this defines Attribute elements:-->
    <xs:complexType name="PropertyType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Name" type="xs:string" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <!-- this defines AdditionalInputsType elements:-->
    <xs:complexType name="AdditionalInputsType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="MandatoryInput" type="ComponentInputType" />
            <xs:element maxOccurs="unbounded" minOccurs="0" name="OptionalInput" type="ComponentInputType" />
        </xs:sequence>
        <xs:attribute name="ComponentTemplateId" type="xs:string" use="required" />
    </xs:complexType>
    <!-- this defines ComponentInputType elements:-->
    <xs:complexType name="ComponentInputType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="MaxNumberOfInputs" type="xs:int" use="optional" />
                <xs:attribute name="CommonSources" type="xs:string" use="optional" />
                <xs:attribute name="DifferentSources" type="xs:string" use="optional" />
                <xs:attribute name="AdditionalPrerequisites" type="xs:string" use="optional" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <!-- this defines AdditionalOutputsType elements:-->
    <xs:complexType name="AdditionalOutputsType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Output" type="xs:string" />
        </xs:sequence>
        <xs:attribute name="ComponentTemplateId" type="xs:string" use="required" />
    </xs:complexType>
    <!-- SystemTemplates ######################################################################################## -->
    <xs:complexType name="SystemTemplatesType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="SystemTemplate" type="SystemTemplateType" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="SystemTemplateType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="InternalComponent" type="InternalComponentType" />
            <xs:element name="ExternalComponent" type="ExternalComponentType" />
        </xs:choice>
        <xs:attribute name="Id" type="xs:string" use="required" />
    </xs:complexType>
    <!-- this defines InternalComponent elements:-->
    <xs:complexType name="InternalComponentType">
        <xs:attribute name="Caption" type="xs:string" use="optional" />
        <xs:attribute name="ComponentTemplateId" type="xs:string" use="required" />
    </xs:complexType>
    <!-- this defines ExternalComponent elements:-->
    <xs:complexType name="ExternalComponentType">
        <xs:attribute name="Caption" type="xs:string" use="optional" />
        <xs:attribute name="ComponentTemplateId" type="xs:string" use="required" />
    </xs:complexType>
    <xs:complexType name="HelpIdsType">
        <xs:all>
            <xs:element name="SidebarHelpIds" type="SidebarHelpIdsType" />
            <xs:element name="Tooltips" type="TooltipsType" />
            <xs:element name="QuickHelpIdList" type="QuickHelpIdListType" />
        </xs:all>
    </xs:complexType>
    <!-- this defines a list of sidebar helper IDs -->
    <xs:complexType name="SidebarHelpIdsType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="SidebarHelpId" type="SidebarHelpIdType" />
        </xs:sequence>
    </xs:complexType>
    <!-- this defines a list of tooltip helper IDs -->
    <xs:complexType name="TooltipsType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="Tooltip" type="TooltipType" />
        </xs:sequence>
    </xs:complexType>
    <!-- this defines a list lists of quick help IDs -->
    <xs:complexType name="QuickHelpIdListType">
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="QuickHelpIds" type="QuickHelpIdsType" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="SidebarHelpIdType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="SystemId" type="xs:string" use="required" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="TooltipType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="SystemId" type="xs:string" use="required" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="QuickHelpIdsType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="QuickHelpId" type="QuickHelpIdType" />
        </xs:sequence>
        <xs:attribute name="ContainerName" type="xs:string" use="required" />
    </xs:complexType>
    <xs:complexType name="QuickHelpIdType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="State" type="ProjectSchematicStateType" use="required" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="ProjectSchematicStateType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Modified" />
            <xs:enumeration value="Interrupted" />
            <xs:enumeration value="Incomplete" />
            <xs:enumeration value="Disabled" />
            <xs:enumeration value="UpToDate" />
            <xs:enumeration value="OutOfDate" />
            <xs:enumeration value="EditRequired" />
            <xs:enumeration value="Unfulfilled" />
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="TransferComponentType">
        <xs:sequence>
            <xs:element name="UserName" type="xs:string" />
            <xs:element name="CreateCommand" type="xs:string" />
            <xs:element name="ExposedTypes" type="ExposedTypesType" />
        </xs:sequence>
        <xs:attribute name="SystemName" type="xs:string" />
        <xs:attribute name="ShowInUI" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="ExposedTypesType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="ExposedType" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TransferComponentsType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="TransferComponent" type="TransferComponentType" />
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="simpleType1">
        <xs:restriction base="xs:string" />
    </xs:simpleType>
</xs:schema>
