Below are the XML schema definition files that make up the SIS XML schema.

File What it defines

common types used by the SIS schema

conditions used in SIS expressions

string-manipulation functions used in SIS expressions

array-manipulation functions used in SIS expressions

the SIS composition component

the SIS trigger component

the SIS macro component

the SIS interceptor component

SIS datatypes specific to IN

IN extensions to the SIS composition component

IN extensions to the SIS trigger component

IN extensions to the SIS interceptor component

SIS datatypes specific to SIP

SIP extensions to the SIS composition component

SIP extensions to the SIS trigger component

SIP extensions to the SIS interceptor component

datatypes-1.3.xsd

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

  <xs:annotation>
    <xs:documentation>
      This no-namespace schema is included by the SIS Trigger, Macro, Composition,
      and Interceptor schemas. It defines types common to all schemas.
    </xs:documentation>
  </xs:annotation>

  <xs:simpleType name="SignificantName">
    <xs:annotation>
      <xs:documentation>
        These names will have all redundant whitespace stripped, and must contain
        at least one non-whitespace character.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:group name="ServiceID">
    <xs:sequence>
      <xs:element name="service-name" type="SignificantName"/>
      <xs:element name="service-vendor" type="SignificantName"/>
      <xs:element name="service-version" type="SignificantName"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="TriggerID">
    <xs:sequence>
      <xs:element name="trigger-name" type="SignificantName"/>
      <xs:element name="trigger-vendor" type="SignificantName"/>
      <xs:element name="trigger-version" type="SignificantName"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="MacroID">
    <xs:sequence>
      <xs:element name="macro-name" type="SignificantName"/>
      <xs:element name="macro-vendor" type="SignificantName"/>
      <xs:element name="macro-version" type="SignificantName"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="CompositionID">
    <xs:sequence>
      <xs:element name="composition-name" type="SignificantName"/>
      <xs:element name="composition-vendor" type="SignificantName"/>
      <xs:element name="composition-version" type="SignificantName"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="InterceptorID">
    <xs:sequence>
      <xs:element name="interceptor-name" type="SignificantName"/>
      <xs:element name="interceptor-vendor" type="SignificantName"/>
      <xs:element name="interceptor-version" type="SignificantName"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="MacroRefType">
    <xs:sequence>
      <xs:element name="description" minOccurs="0"/>
      <xs:group ref="MacroID"/>
      <xs:element name="macro-alias" type="SignificantName"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CompositionRefType">
    <xs:sequence>
      <xs:element name="description" minOccurs="0"/>
      <xs:group ref="CompositionID"/>
      <xs:element name="composition-alias" type="SignificantName"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TerminateType">
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>
</xs:schema>

conditions-1.6.xsd

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

  <xs:include schemaLocation="datatypes-1.3.xsd"/>
  <xs:include schemaLocation="string-manipulator-datatypes-1.2.xsd"/>
  <xs:include schemaLocation="array-manipulator-datatypes-1.1.xsd"/>
  <xs:include schemaLocation="in-sis-datatypes-1.5.xsd"/>

  <xs:annotation>
    <xs:documentation>
      This no-namespace schema is included by the SIS Trigger, Macro and Composition
      schemas. It defines conditions that are used in scripts and macros.
    </xs:documentation>
  </xs:annotation>

  <xs:group name="ConditionGroup">
    <xs:annotation>
      <xs:documentation>
        This choice group defines the elements that may be used in a script
        where a condition is expected.
      </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="true"/>
      <xs:element ref="false"/>
      <xs:element ref="not"/>
      <xs:element ref="and"/>
      <xs:element ref="or"/>
      <xs:element ref="equal"/>
      <xs:element ref="not-equal"/>
      <xs:element ref="macro-satisfied"/>
      <xs:element ref="assign"/>
      <xs:element ref="delete"/>
      <xs:element ref="less-than"/>
      <xs:element ref="greater-than"/>
      <xs:element ref="present"/>
      <xs:element ref="string-starts-with"/>
      <xs:element ref="string-ends-with"/>
      <xs:element ref="string-contains"/>
      <xs:element ref="string-matches"/>
    </xs:choice>
  </xs:group>

  <xs:element name="true" type="EmptyType"/>
  <xs:element name="false" type="EmptyType"/>
  <xs:element name="not" type="ConditionType"/>
  <xs:element name="and" type="MultiConditionType"/>
  <xs:element name="or" type="MultiConditionType"/>
  <xs:element name="equal" type="CompareType"/>
  <xs:element name="not-equal" type="CompareType"/>
  <xs:element name="less-than" type="CompareType"/>
  <xs:element name="greater-than" type="CompareType"/>
  <xs:element name="macro-satisfied" type="MacroSatisfiedType"/>
  <xs:element name="assign" type="AssignType"/>
  <xs:element name="delete" type="DeleteType"/>
  <xs:element name="present" type="PresentType"/>
  <xs:element name="string-starts-with" type="StringStartsWithType"/>
  <xs:element name="string-ends-with" type="StringEndsWithType"/>
  <xs:element name="string-contains" type="StringContainsType"/>
  <xs:element name="string-matches" type="StringMatchesType"/>

  <xs:complexType name="EmptyType"/>

  <xs:complexType name="PresentType">
    <xs:attribute name="variable" type="SignificantName" use="required"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="CompareType">
    <xs:choice minOccurs="0" maxOccurs="2">
      <xs:element ref="value"/>
      <xs:group ref="StringManipulators"/>
      <xs:element name="array-length" type="ArrayLengthType"/>
      <xs:group ref="INSISDataTypes"/>
    </xs:choice>
    <xs:attribute name="a" type="SignificantName" use="optional"/>
    <xs:attribute name="b" type="SignificantName" use="optional"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="AssignType">
    <xs:choice minOccurs="0" maxOccurs="1">
      <xs:element ref="value"/>
      <xs:group ref="StringManipulators"/>
      <xs:group ref="ArrayManipulators"/>
      <xs:group ref="INSISDataTypes"/>
    </xs:choice>
    <xs:attribute name="toVariable" type="xs:string" use="required"/>
    <xs:attribute name="value" type="xs:string"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="DeleteType">
    <xs:attribute name="variable" type="xs:string" use="required"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="MacroSatisfiedType">
    <xs:attribute name="macro" type="SignificantName"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="ConditionType">
    <xs:choice>
      <xs:group ref="ConditionGroup"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="MultiConditionType">
    <xs:choice maxOccurs="unbounded">
      <xs:group ref="ConditionGroup"/>
    </xs:choice>
  </xs:complexType>

  <xs:element name="value">
    <xs:complexType>
      <xs:attribute name="value" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

string-manipulator-datatypes-1.2.xsd

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

  <xs:annotation>
    <xs:documentation>
      This no-namespace schema is included by the SIS Trigger, Macro and Composition
      schemas. It defines types common to all schemas.
    </xs:documentation>
  </xs:annotation>

  <xs:group name="StringManipulators">
    <xs:choice>
      <xs:element name="string-prepend" type="StringPrependType"/>
      <xs:element name="string-append" type="StringAppendType"/>
      <xs:element name="string-substring" type="StringSubstringType"/>
      <xs:element name="string-length" type="StringLengthType"/>
      <xs:element name="string-contains" type="StringContainsType"/>
      <xs:element name="string-index-of" type="StringIndexOfType"/>
      <xs:element name="string-last-index-of" type="StringLastIndexOfType"/>
      <xs:element name="string-starts-with" type="StringStartsWithType"/>
      <xs:element name="string-ends-with" type="StringEndsWithType"/>
      <xs:element name="string-matches" type="StringMatchesType"/>
    </xs:choice>
  </xs:group>

  <xs:attributeGroup name="source-suffix-attgroup">
    <xs:attribute name="source" type="xs:string" use="required"/>
    <xs:attribute name="suffix" type="xs:string" use="required"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="source-prefix-attgroup">
    <xs:attribute name="source" type="xs:string" use="required"/>
    <xs:attribute name="prefix" type="xs:string" use="required"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="source-substring-attgroup">
    <xs:attribute name="source" type="xs:string" use="required"/>
    <xs:attribute name="substring" type="xs:string" use="required"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="source-substring-begin-index-attgroup">
    <xs:attribute name="source" type="xs:string" use="required"/>
    <xs:attribute name="substring" type="xs:string" use="required"/>
    <xs:attribute name="begin-index" type="xs:string"/>
  </xs:attributeGroup>

  <xs:complexType name="StringPrependType">
    <xs:attributeGroup ref="source-prefix-attgroup"/>
  </xs:complexType>

  <xs:complexType name="StringAppendType">
    <xs:attributeGroup ref="source-suffix-attgroup"/>
  </xs:complexType>

  <xs:complexType name="StringSubstringType">
    <xs:attribute name="source" type="xs:string" use="required"/>
    <xs:attribute name="begin-index" type="xs:string" use="required"/>
    <xs:attribute name="end-index" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="StringLengthType">
    <xs:attribute name="source" type="xs:string" use="required"/>
  </xs:complexType>

  <xs:complexType name="StringContainsType">
    <xs:attributeGroup ref="source-substring-attgroup"/>
  </xs:complexType>

  <xs:complexType name="StringIndexOfType">
    <xs:attributeGroup ref="source-substring-begin-index-attgroup"/>
  </xs:complexType>

  <xs:complexType name="StringLastIndexOfType">
    <xs:attributeGroup ref="source-substring-begin-index-attgroup"/>
  </xs:complexType>

  <xs:complexType name="StringStartsWithType">
    <xs:attributeGroup ref="source-prefix-attgroup"/>
    <xs:attribute name="begin-index" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="StringEndsWithType">
    <xs:attributeGroup ref="source-suffix-attgroup"/>
  </xs:complexType>

  <xs:complexType name="StringMatchesType">
    <xs:attribute name="source" type="xs:string" use="required"/>
    <xs:attribute name="regex" type="xs:string" use="required"/>
  </xs:complexType>
</xs:schema>

array-manipulator-datatypes-1.1.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:include schemaLocation="in-sis-datatypes-1.5.xsd"/>

  <xs:annotation>
    <xs:documentation>
      This no-namespace schema is included by the SIS Trigger, Macro and Composition
      schemas. It defines types common to all schemas.
    </xs:documentation>
  </xs:annotation>

  <xs:group name="ArrayManipulators">
    <xs:choice>
      <xs:element name="array-add-element" type="ArrayAddElementType"/>
      <xs:element name="array-remove-element" type="ArrayRemoveElementType"/>
      <xs:element name="array-length" type="ArrayLengthType"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="ArrayAddElementType">
    <xs:choice minOccurs="0" maxOccurs="1">
      <xs:element name="value">
        <xs:complexType>
          <xs:attribute name="value" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:group ref="INSISDataTypes"/>
    </xs:choice>
    <xs:attribute name="array" type="xs:string" use="required"/>
    <xs:attribute name="index" type="xs:string" use="optional"/>
    <xs:attribute name="value" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ArrayRemoveElementType">
    <xs:choice minOccurs="0" maxOccurs="1">
      <xs:element name="value">
        <xs:complexType>
          <xs:attribute name="value" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:group ref="INSISDataTypes"/>
    </xs:choice>
    <xs:attribute name="array" type="xs:string" use="required"/>
    <xs:attribute name="index" type="xs:string" use="optional"/>
    <xs:attribute name="value" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ArrayLengthType">
    <xs:attribute name="array" type="xs:string" use="required"/>
  </xs:complexType>
</xs:schema>

sis-composition-1.8.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Composition"
           xmlns="http://www.opencloud.com/SIS/Composition"
           xmlns:c="http://www.opencloud.com/SIS/Composition">

  <xs:include schemaLocation="datatypes-1.3.xsd"/>
  <xs:include schemaLocation="conditions-1.6.xsd"/>

  <xs:element name="composition" type="CompositionType">
    <xs:key name="service-key">
      <xs:annotation>
        <xs:documentation>
          The service-alias element in service-ref must be unique.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath="c:service-ref"/>
      <xs:field xpath="c:service-alias"/>
    </xs:key>

    <xs:key name="macro-key">
      <xs:annotation>
        <xs:documentation>
          The macro-alias element in macro-ref must be unique.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath="c:macro-ref"/>
      <xs:field xpath="c:macro-alias"/>
    </xs:key>

    <xs:keyref name="macro-keyref" refer="macro-key">
      <xs:annotation>
        <xs:documentation>
          The macro attribute of macro-satisfied must refer to a defined macro alias.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath=".//c:macro-satisfied"/>
      <xs:field xpath="@macro"/>
    </xs:keyref>
  </xs:element>

  <xs:complexType name="CompositionType">
    <xs:sequence>
      <xs:element name="description" minOccurs="0"/>
      <xs:group ref="CompositionID"/>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="macro-ref" type="MacroRefType"/>
      </xs:choice>
      <xs:element ref="script"/>
      <xs:element name="debug-level" type="DebugLevelType" minOccurs="0" default="0"/>
      <xs:element name="audit" type="xs:boolean" minOccurs="0" default="false"/>
      <xs:element name="extension-options" type="ExtensionOptionsType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="script" type="TopLevelScriptBlockType"/>

  <xs:simpleType name="DebugLevelType">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="3"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ExtensionOptionsType">
    <xs:sequence>
      <xs:element name="extension-option" type="ExtensionOptionType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ExtensionOptionType">
    <xs:sequence>
      <xs:any namespace="##any" minOccurs="0" maxOccurs="1" processContents="lax">
        <xs:annotation>
          <xs:documentation>
            Allow a single element inside extension-option. Elements that are known in the schema
            will be validated, others will be ignored.
          </xs:documentation>
        </xs:annotation>
      </xs:any>
    </xs:sequence>
    <xs:attribute name="name" use="required"/>
    <xs:attribute name="value" use="optional"/>
  </xs:complexType>

  <xs:complexType name="TopLevelScriptBlockType">
    <xs:sequence>
      <xs:element name="composition-input-interceptor" type="InterceptorBlockType" minOccurs="0"/>
      <xs:group ref="ScriptStatementGroup"/>
      <xs:element name="composition-output-interceptor" type="InterceptorBlockType" minOccurs="0"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:group name="ScriptStatementGroup">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="assign" type="AssignType"/>
        <xs:element name="delete" type="DeleteType"/>
        <xs:element name="if" type="IfType"/>
        <xs:element ref="invoke"/>
        <xs:element ref="parallel"/>
      </xs:choice>
      <xs:element ref="halt" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="invoke" type="InvokeServiceType"/>

  <xs:complexType name="InvokeServiceType">
    <xs:sequence>
      <xs:element name="service-input-interceptor" type="InterceptorBlockType" minOccurs="0"/>
      <xs:element name="service-output-interceptor" type="InterceptorBlockType" minOccurs="0"/>
      <xs:element ref="terminate" minOccurs="0"/>
      <xs:element name="message-handling-options" type="MessageHandlingOptionsType" minOccurs="0"/>
      <xs:element name="extension-options" type="ExtensionOptionsType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="service" type="SignificantName"/>
    <xs:attribute name="timeout" type="xs:long"/>
    <xs:attribute name="on-timeout" type="ServiceTimeoutOptions" default="ignore-service-and-continue"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:element name="terminate" type="TerminateType">
    <xs:annotation>
      <xs:documentation>
        The terminate element can only be used if the parent element's on-timeout attribute equals "terminate-processing".
        It specifies an optional termination response to return to the network.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:simpleType name="ServiceTimeoutOptions">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ignore-service-and-continue"/>
      <xs:enumeration value="terminate-processing"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="parallel" type="ParallelBlock"/>

  <xs:complexType name="ParallelBlock">
    <xs:sequence>
      <xs:element name="service-input-interceptor" type="InterceptorBlockType" minOccurs="0"/>
      <xs:element name="invoke" type="ParallelInvokeServiceType" maxOccurs="unbounded"/>
      <xs:element name="service-output-interceptor" type="InterceptorBlockType" minOccurs="0"/>
      <xs:element ref="terminate" minOccurs="0"/>
      <xs:element name="message-handling-options" type="MessageHandlingOptionsType" minOccurs="0"/>
      <xs:element name="extension-options" type="ExtensionOptionsType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="timeout" type="xs:long"/>
    <xs:attribute name="on-timeout" type="ServiceTimeoutOptions" default="ignore-service-and-continue"/>
  </xs:complexType>

  <xs:complexType name="ParallelInvokeServiceType">
    <xs:complexContent>
      <xs:extension base="InvokeServiceType">
        <xs:attribute name="primary" type="xs:boolean" default="false"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="InterceptorBlockType">
    <xs:sequence>
      <xs:group ref="InterceptorStatementGroup"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:group name="InterceptorStatementGroup">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="assign" type="AssignType"/>
        <xs:element name="delete" type="DeleteType"/>
        <xs:element name="if" type="InterceptorIfType"/>
        <xs:element ref="invoke-extension"/>
        <xs:element ref="invoke-interceptor"/>
      </xs:choice>
      <xs:element ref="halt" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="invoke-extension" type="InvokeInterceptorExtensionType"/>

  <xs:complexType name="InvokeInterceptorExtensionType">
    <xs:attribute name="extension" type="SignificantName" use="required"/>
    <xs:attribute name="timeout" type="xs:long"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:element name="invoke-interceptor" type="InvokeInterceptorType"/>

  <xs:complexType name="InvokeInterceptorType">
    <xs:attribute name="interceptor" type="SignificantName" use="required"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="InterceptorIfType">
    <xs:sequence>
      <xs:group ref="ConditionGroup"/>
      <xs:element name="then" type="InterceptorBlockType"/>
      <xs:element name="else-if" type="InterceptorElseIfType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="else" type="InterceptorBlockType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InterceptorElseIfType">
    <xs:sequence>
      <xs:group ref="ConditionGroup"/>
      <xs:element name="then" type="InterceptorBlockType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="IfType">
    <xs:sequence>
      <xs:group ref="ConditionGroup"/>
      <xs:element name="then" type="NestedScriptBlockType"/>
      <xs:element name="else-if" type="ElseIfType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="else" type="NestedScriptBlockType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ElseIfType">
    <xs:sequence>
      <xs:group ref="ConditionGroup"/>
      <xs:element name="then" type="NestedScriptBlockType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NestedScriptBlockType">
    <xs:sequence>
      <xs:group ref="ScriptStatementGroup"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:element name="halt" type="TerminateType"/>

  <xs:complexType name="MessageHandlingOptionsType">
    <xs:sequence>
      <xs:element ref="message-handling-option" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="message-handling-option" type="MessageHandlingOptionType"/>

  <xs:complexType name="MessageHandlingOptionType">
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>
</xs:schema>

sis-trigger-1.6.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Trigger"
           xmlns="http://www.opencloud.com/SIS/Trigger"
           xmlns:t="http://www.opencloud.com/SIS/Trigger">

  <xs:include schemaLocation="datatypes-1.3.xsd"/>
  <xs:include schemaLocation="conditions-1.6.xsd"/>

  <xs:element name="trigger">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="description" minOccurs="0"/>
        <xs:group ref="TriggerID"/>
        <xs:element name="trigger-priority" type="xs:int"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="macro-ref" type="MacroRefType"/>
          <xs:element name="composition-ref" type="CompositionRefType"/>
        </xs:choice>
        <xs:element name="on-condition" type="ConditionType"/>
        <xs:element name="select" type="SelectorType" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="terminate" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>

    <xs:key name="macro-key">
      <xs:annotation>
        <xs:documentation>
          The macro-alias element in macro-ref must be unique.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath="t:macro-ref"/>
      <xs:field xpath="t:macro-alias"/>
    </xs:key>

    <xs:keyref name="macro-keyref" refer="macro-key">
      <xs:annotation>
        <xs:documentation>
          The macro attribute of macro-satisfied must refer to a defined macro alias.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath=".//t:macro-satisfied"/>
      <xs:field xpath="@macro"/>
    </xs:keyref>

    <xs:key name="composition-key">
      <xs:annotation>
        <xs:documentation>
          The composition-alias element in composition-ref must be unique.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath="t:composition-ref"/>
      <xs:field xpath="t:composition-alias"/>
    </xs:key>

    <xs:keyref name="composition-keyref" refer="composition-key">
      <xs:annotation>
        <xs:documentation>
          The composition-alias-ref element of a select element must refer to a defined composition alias.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath=".//t:select"/>
      <xs:field xpath="t:composition-alias-ref"/>
    </xs:keyref>
  </xs:element>

  <xs:complexType name="SelectorType">
    <xs:annotation>
      <xs:documentation>
        If the select element contains an extension reference, the SIS implementation will
        fire an event to the extension component, using the SCS API to select a composition.
        If the select element contains a composition-alias-ref, the SIS implementation
        will invoke that composition.
        If the select element contains a profile-lookup, the SIS will invoke the
        profile lookup method to find a composition.
      </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element name="extension" type="SCSServiceType"/>
      <xs:element name="composition-alias-ref" type="SignificantName"/>
      <xs:element name="profile-lookup" type="ProfileLookupType"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SCSServiceType">
    <xs:simpleContent>
      <xs:extension base="SignificantName">
        <xs:attribute name="timeout" type="xs:long"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ProfileLookupType">
    <xs:annotation>
      <xs:documentation>
        This element specifies an implementation-specific method for looking
        up a composition using profiles.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="scheme" type="SignificantName">
      <xs:annotation>
        <xs:documentation>
          The scheme attribute specifies which type of profile lookup will be performed.
          Available schemes must be documented by the SIS implementation.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="key" type="SignificantName">
    <xs:annotation>
      <xs:documentation>
        The key attribute specifies the name of a field from the initial request.
        The value of this field will be passed to the profile lookup implementation.
      </xs:documentation>
    </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="terminate" type="TerminateType">
    <xs:annotation>
      <xs:documentation>
        If this terminate element is present in the instance document, the SIS will perform
        the implementation-specific composition termination action.
        Protocol-specific schemas may replace this element with something more useful,
        by defining an element that extends TerminationType and is in the "terminate" substitution group.
      </xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>

sis-macro-1.6.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Macro"
           xmlns="http://www.opencloud.com/SIS/Macro"
           xmlns:m="http://www.opencloud.com/SIS/Macro">

  <xs:include schemaLocation="datatypes-1.3.xsd"/>
  <xs:include schemaLocation="conditions-1.6.xsd"/>

  <xs:element name="macro">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="description" type="xs:string" minOccurs="0"/>
        <xs:group ref="MacroID"/>
        <xs:element name="macro-ref" type="MacroRefType" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="macro-expression" type="ConditionType"/>
      </xs:sequence>
    </xs:complexType>

    <xs:key name="macro-key">
      <xs:annotation>
        <xs:documentation>
          The macro-alias element in macro-ref must be unique.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath="m:macro-ref"/>
      <xs:field xpath="m:macro-alias"/>
    </xs:key>

    <xs:keyref name="macro-keyref" refer="macro-key">
      <xs:annotation>
        <xs:documentation>
          The macro attribute of macro-satisfied must refer to a defined macro alias.
        </xs:documentation>
      </xs:annotation>
      <xs:selector xpath=".//m:macro-satisfied"/>
      <xs:field xpath="@macro"/>
    </xs:keyref>

  </xs:element>

</xs:schema>

sis-interceptor-1.2.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Interceptor"
           xmlns="http://www.opencloud.com/SIS/Interceptor"
           xmlns:i="http://www.opencloud.com/SIS/Interceptor">

  <xs:include schemaLocation="conditions-1.6.xsd"/>

  <xs:element name="interceptor">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="description" minOccurs="0"/>
        <xs:group ref="InterceptorID"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="macro-ref" type="MacroRefType"/>
        </xs:choice>
        <xs:element name="script" type="InterceptorBlockType"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="InterceptorBlockType">
    <xs:sequence>
      <xs:group ref="InterceptorStatementGroup"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:group name="InterceptorStatementGroup">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="assign" type="AssignType"/>
        <xs:element name="delete" type="DeleteType"/>
        <xs:element name="if" type="InterceptorIfType"/>
        <xs:element ref="invoke-extension"/>
        <xs:element ref="invoke-interceptor"/>
      </xs:choice>
      <xs:element ref="halt" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="invoke-extension" type="InvokeInterceptorExtensionType"/>

  <xs:complexType name="InvokeInterceptorExtensionType">
    <xs:attribute name="extension" type="SignificantName"/>
    <xs:attribute name="timeout" type="xs:long"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:element name="invoke-interceptor" type="InvokeInterceptorType"/>

  <xs:complexType name="InvokeInterceptorType">
    <xs:attribute name="interceptor" type="SignificantName" use="required"/>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name="InterceptorIfType">
    <xs:sequence>
      <xs:group ref="ConditionGroup"/>
      <xs:element name="then" type="InterceptorBlockType"/>
      <xs:element name="else-if" type="InterceptorElseIfType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="else" type="InterceptorBlockType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InterceptorElseIfType">
    <xs:sequence>
      <xs:group ref="ConditionGroup"/>
      <xs:element name="then" type="InterceptorBlockType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="halt" type="TerminateType"/>
</xs:schema>

in-sis-datatypes-1.5.xsd

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

  <xs:annotation>
    <xs:documentation>
      This no-namespace schema is included by the SIS Trigger, Macro and Composition
      schemas for IN. It defines IN-specific datatypes.
    </xs:documentation>
  </xs:annotation>

  <xs:group name="INSISDataTypes">
    <xs:choice>
      <xs:element name="object" type="ObjectType"/>
      <xs:element name="array" type="ArrayType"/>
      <xs:element name="enum" type="EnumType"/>
      <xs:element name="bytes" type="ByteArrayType"/>
      <xs:element name="calling-party-number" type="CallingPartyNumberType"/>
      <xs:element name="called-party-number" type="CalledPartyNumberType"/>
      <xs:element name="called-party-bcd-number" type="CalledPartyBCDNumberType"/>
      <xs:element name="redirecting-party-number" type="RedirectingPartyNumberType"/>
      <xs:element name="original-called-number" type="OriginalCalledNumberType"/>
      <xs:element name="location-number" type="LocationNumberType"/>
      <xs:element name="address-string" type="AddressStringType"/>
      <xs:element name="cell-global-id" type="CellGlobalIDType"/>
      <xs:element name="service-area-id" type="ServiceAreaIDType"/>
      <xs:element name="location-area-id" type="LocationAreaIDType"/>
      <xs:element name="generic-number" type="GenericNumberType"/>
      <xs:element name="imsi" type="IMSIType"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="ObjectType">
    <xs:sequence>
      <xs:element name="field" type="FieldType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="class" type="xs:string" use="required"/>
    <xs:attribute name="encoded-value" type="xs:string" use="optional"/>
    <xs:attribute name="copy-of" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="FieldType">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:group ref="INSISDataTypes"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="value" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ArrayType">
    <xs:sequence>
      <xs:element name="element" type="ArrayElement" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="class" type="xs:string" use="required"/>
    <xs:attribute name="length" type="xs:string" use="optional"/>
    <xs:attribute name="copy-of" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ArrayElement">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:group ref="INSISDataTypes"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="value" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="EnumType">
    <xs:attribute name="class" type="xs:string" use="required"/>
    <xs:attribute name="value" type="xs:string" use="required"/>
  </xs:complexType>

  <xs:complexType name="CallingPartyNumberType">
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="number-incomplete" type="xs:boolean" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="presentation" type="xs:string" use="required"/>
    <xs:attribute name="screening" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CalledPartyNumberType">
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="routing-to-internal-network-number" type="INNRoutingType" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CalledPartyBCDNumberType">
    <xs:attribute name="number-type" type="xs:string" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="RedirectingPartyNumberType">
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="presentation" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="OriginalCalledNumberType">
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="presentation" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="LocationNumberType">
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="routing-to-internal-network-number" type="INNRoutingType" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="presentation" type="xs:string" use="required"/>
    <xs:attribute name="screening" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="AddressStringType">
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CellGlobalIDType">
    <xs:attribute name="mobile-country-code" type="xs:string" use="required"/>
    <xs:attribute name="mobile-network-code" type="xs:string" use="required"/>
    <xs:attribute name="location-area-code" type="xs:string" use="required"/>
    <xs:attribute name="cell-id" type="xs:string" use="required"/>
    <xs:attribute name="mobile-country-code-codec" type="CodecType" use="optional"/>
    <xs:attribute name="mobile-network-code-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ServiceAreaIDType">
    <xs:attribute name="mobile-country-code" type="xs:string" use="required"/>
    <xs:attribute name="mobile-network-code" type="xs:string" use="required"/>
    <xs:attribute name="location-area-code" type="xs:string" use="required"/>
    <xs:attribute name="service-area-code" type="xs:string" use="required"/>
    <xs:attribute name="mobile-country-code-codec" type="CodecType" use="optional"/>
    <xs:attribute name="mobile-network-code-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="LocationAreaIDType">
    <xs:attribute name="mobile-country-code" type="xs:string" use="required"/>
    <xs:attribute name="mobile-network-code" type="xs:string" use="required"/>
    <xs:attribute name="location-area-code" type="xs:string" use="required"/>
    <xs:attribute name="mobile-country-code-codec" type="CodecType" use="optional"/>
    <xs:attribute name="mobile-network-code-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="GenericNumberType">
    <xs:attribute name="number-qualifier" type="xs:string" use="required"/>
    <xs:attribute name="number-incomplete" type="xs:boolean" use="required"/>
    <xs:attribute name="nature" type="xs:string" use="required"/>
    <xs:attribute name="numbering-plan" type="xs:string" use="required"/>
    <xs:attribute name="presentation" type="xs:string" use="required"/>
    <xs:attribute name="screening" type="xs:string" use="required"/>
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="IMSIType">
    <xs:attribute name="address" type="xs:string" use="required"/>
    <xs:attribute name="address-codec" type="CodecType" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ByteArrayType">
    <xs:attribute name="bytes" type="xs:string" use="required"/>
  </xs:complexType>

  <xs:simpleType name="CodecType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="standard"/>
      <xs:enumeration value="hex"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="INNRoutingType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ALLOWED"/>
      <xs:enumeration value="NOT_ALLOWED"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Types used in IN fail type extensions -->
  <xs:simpleType name="DialogTerminationType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="none"/>
      <xs:enumeration value="close"/>
      <xs:enumeration value="user-abort"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="UserErrorType">
    <xs:attribute name="reason" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="unexpected-data-value"/>
          <xs:enumeration value="missing-parameter"/>
          <xs:enumeration value="missing-customer-record"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="RedirectType">
    <xs:attribute name="idd-prefix" type="xs:string" use="required"/>
    <xs:attribute name="country-code" type="xs:string" use="required"/>
    <xs:attribute name="redirect-prefix" type="xs:string" use="required"/>
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="ContinueType">
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="ConnectType">
    <xs:sequence>
      <xs:element name="called-party-number" type="CalledPartyNumberType"/>
    </xs:sequence>
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="ConnectSMSType">
    <xs:sequence>
      <xs:element name="called-party-bcd-number" type="CalledPartyBCDNumberType"/>
    </xs:sequence>
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="ReleaseType">
    <xs:attribute name="cause-code" type="xs:string" use="required"/>
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="NoResponseType">
    <xs:attribute name="dialog-termination" type="DialogTerminationType" use="required"/>
  </xs:complexType>
</xs:schema>

in-sis-composition-1.8.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Composition/IN"
           xmlns="http://www.opencloud.com/SIS/Composition/IN"
           xmlns:sis="http://www.opencloud.com/SIS/Composition"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.opencloud.com/SIS/Composition sis-composition-1.8.xsd">

  <xs:include schemaLocation="datatypes-1.3.xsd"/>
  <xs:include schemaLocation="in-sis-datatypes-1.5.xsd"/>
  <xs:import namespace="http://www.opencloud.com/SIS/Composition" schemaLocation="sis-composition-1.8.xsd"/>

  <xs:element name="composition" substitutionGroup="sis:composition" type="INComposition">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:composition element.
        It extends the generic element with IN-specific settings.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="INComposition">
    <xs:complexContent>
      <xs:extension base="sis:CompositionType">
        <xs:sequence>
          <xs:element name="optimisations-enabled" type="xs:boolean" minOccurs="0" default="false"/>
          <xs:element name="fci-interaction" type="FCIInteractionType" minOccurs="0"/>
          <xs:element name="online-charging-interaction" type="OnlineChargingInteractionType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="FCIInteractionType">
    <xs:attribute name="mode" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="static-service-priorities"/>
          <xs:enumeration value="nominated-service"/>
          <xs:enumeration value="concatenation"/>
          <xs:enumeration value="pass-through"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <!-- service attribute only present if mode="nominated-service" -->
    <xs:attribute name="service" type="SignificantName" use="optional"/>
  </xs:complexType>

  <xs:complexType name="OnlineChargingInteractionType">
    <xs:attribute name="mode" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="static-service-priorities"/>
          <xs:enumeration value="nominated-service"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <!-- service attribute only present if mode="nominated-service" -->
    <xs:attribute name="service" type="SignificantName" use="optional"/>
  </xs:complexType>

  <xs:element name="halt" substitutionGroup="sis:halt" type="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:halt element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="terminate" substitutionGroup="sis:terminate" type="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:terminate element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        Extends the generic sis:TerminateType type with IN-specific elements and attributes.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sis:TerminateType">
        <xs:choice minOccurs="0">
          <xs:element name="user-error" type="UserErrorType"/>
          <xs:element name="redirect" type="RedirectType"/>
          <xs:element name="continue" type="ContinueType"/>
          <xs:element name="connect" type="ConnectType"/>
          <xs:element name="connect-sms" type="ConnectSMSType"/>
          <xs:element name="release" type="ReleaseType"/>
          <xs:element name="relay" type="RelayType"/>
          <xs:element name="no-response" type="NoResponseType"/>
        </xs:choice>
        <xs:attribute name="record-as-reject" type="xs:boolean" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RelayType">
    <xs:sequence>
      <xs:element name="on-failure" type="INTerminateType"/>
    </xs:sequence>
    <xs:attribute name="target" type="xs:string" use="required"/>
  </xs:complexType>

  <xs:element name="message-handling-option" substitutionGroup="sis:message-handling-option" type="INMessageHandlingOptionType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:invoke element.
        In extends the generic element with IN-specific settings.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="INMessageHandlingOptionType">
    <xs:complexContent>
      <xs:extension base="sis:MessageHandlingOptionType">
        <xs:sequence>
          <xs:element ref="terminate" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="on-message" type="xs:string" use="required"/>
        <xs:attribute name="action" type="xs:string" use="required"/>
        <xs:attribute name="is-failure" type="xs:boolean" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>

in-sis-trigger-1.6.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Trigger/IN"
           xmlns="http://www.opencloud.com/SIS/Trigger/IN"
           xmlns:sis="http://www.opencloud.com/SIS/Trigger"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.opencloud.com/SIS/Trigger sis-trigger-1.6.xsd">

  <xs:include schemaLocation="in-sis-datatypes-1.5.xsd"/>
  <xs:import namespace="http://www.opencloud.com/SIS/Trigger" schemaLocation="sis-trigger-1.6.xsd"/>

  <xs:element name="terminate" substitutionGroup="sis:terminate" type="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:terminate element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        Extends the generic sis:TerminateType type with IN-specific elements and attributes.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sis:TerminateType">
        <xs:choice minOccurs="0">
          <xs:element name="user-error" type="UserErrorType"/>
          <xs:element name="redirect" type="RedirectType"/>
          <xs:element name="continue" type="ContinueType"/>
          <xs:element name="connect" type="ConnectType"/>
          <xs:element name="connect-sms" type="ConnectSMSType"/>
          <xs:element name="release" type="ReleaseType"/>
          <xs:element name="relay" type="RelayType"/>
          <xs:element name="no-response" type="NoResponseType"/>
        </xs:choice>
        <xs:attribute name="record-as-reject" type="xs:boolean" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RelayType">
    <xs:sequence>
      <xs:element name="on-failure" type="INTerminateType"/>
    </xs:sequence>
    <xs:attribute name="target" type="xs:string" use="required"/>
  </xs:complexType>
</xs:schema>

in-sis-interceptor-1.2.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Interceptor/IN"
           xmlns="http://www.opencloud.com/SIS/Interceptor/IN"
           xmlns:sis="http://www.opencloud.com/SIS/Interceptor"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.opencloud.com/SIS/Interceptor sis-interceptor-1.2.xsd">

  <xs:include schemaLocation="in-sis-datatypes-1.5.xsd"/>
  <xs:import namespace="http://www.opencloud.com/SIS/Interceptor" schemaLocation="sis-interceptor-1.2.xsd"/>

  <xs:element name="halt" substitutionGroup="sis:halt" type="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:halt element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="INTerminateType">
    <xs:annotation>
      <xs:documentation>
        Extends the generic sis:TerminateType type with IN-specific elements and attributes.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sis:TerminateType">
        <xs:choice minOccurs="0">
          <xs:element name="user-error" type="UserErrorType"/>
          <xs:element name="redirect" type="RedirectType"/>
          <xs:element name="continue" type="ContinueType"/>
          <xs:element name="connect" type="ConnectType"/>
          <xs:element name="connect-sms" type="ConnectSMSType"/>
          <xs:element name="release" type="ReleaseType"/>
          <xs:element name="relay" type="RelayType"/>
          <xs:element name="no-response" type="NoResponseType"/>
        </xs:choice>
        <xs:attribute name="record-as-reject" type="xs:boolean" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RelayType">
    <xs:sequence>
      <xs:element name="on-failure" type="INTerminateType"/>
    </xs:sequence>
    <xs:attribute name="target" type="xs:string" use="required"/>
  </xs:complexType>
</xs:schema>

sip-sis-datatypes-1.0.xsd

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

  <xs:annotation>
    <xs:documentation>
      This no-namespace schema is included by the SIS Trigger, Macro and Composition
      schemas for SIP. It defines SIP-specific datatypes.
    </xs:documentation>
  </xs:annotation>

  <xs:complexType name="RejectType">
    <xs:sequence>
      <xs:element name="header" type="HeaderType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="status-code" type="xs:string" use="required"/>
    <xs:attribute name="reason-phrase" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ForwardType">
    <xs:sequence>
      <xs:element name="header" type="HeaderType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="uri" type="xs:string" use="optional"/>
    <xs:attribute name="proxy-to" type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:simpleType name="SipErrorStatusCodeType">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="300"/>
      <xs:maxInclusive value="699"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SipURIType">
    <xs:annotation>
      <xs:documentation>Matches sip/sips/tel URIs</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="([sS][iI][pP][sS]?|[tT][eE][lL]):.+"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="HeaderType">
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="value" type="xs:string" use="required"/>
  </xs:complexType>
</xs:schema>

sip-sis-composition-1.8.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Composition/SIP"
           xmlns="http://www.opencloud.com/SIS/Composition/SIP"
           xmlns:sis="http://www.opencloud.com/SIS/Composition"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.opencloud.com/SIS/Composition sis-composition-1.8.xsd">

  <xs:include schemaLocation="sip-sis-datatypes-1.0.xsd"/>
  <xs:import namespace="http://www.opencloud.com/SIS/Composition" schemaLocation="sis-composition-1.8.xsd"/>

  <xs:element name="halt" substitutionGroup="sis:halt" type="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:halt element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="terminate" substitutionGroup="sis:terminate" type="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:terminate element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        Extends the generic sis:TerminateType type with SIP-specific elements and attributes.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sis:TerminateType">
        <xs:choice>
          <xs:element ref="reject"/>
          <xs:element ref="forward"/>
        </xs:choice>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="reject" type="RejectType"/>
  <xs:element name="forward" type="ForwardType"/>

</xs:schema>

sip-sis-trigger-1.6.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Trigger/SIP"
           xmlns="http://www.opencloud.com/SIS/Trigger/SIP"
           xmlns:sis="http://www.opencloud.com/SIS/Trigger"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.opencloud.com/SIS/Trigger sis-trigger-1.6.xsd">

  <xs:include schemaLocation="sip-sis-datatypes-1.0.xsd"/>
  <xs:import namespace="http://www.opencloud.com/SIS/Trigger" schemaLocation="sis-trigger-1.6.xsd"/>

  <xs:element name="terminate" substitutionGroup="sis:terminate" type="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:terminate element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        Extends the generic sis:TerminateType type with SIP-specific elements and attributes.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sis:TerminateType">
        <xs:choice>
          <xs:element name="reject" type="RejectType"/>
          <xs:element name="forward" type="ForwardType"/>
        </xs:choice>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>

sip-sis-interceptor-1.2.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opencloud.com/SIS/Interceptor/SIP"
           xmlns="http://www.opencloud.com/SIS/Interceptor/SIP"
           xmlns:sis="http://www.opencloud.com/SIS/Interceptor"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.opencloud.com/SIS/Interceptor sis-interceptor-1.2.xsd">

  <xs:include schemaLocation="sip-sis-datatypes-1.0.xsd"/>
  <xs:import namespace="http://www.opencloud.com/SIS/Interceptor" schemaLocation="sis-interceptor-1.2.xsd"/>

  <xs:element name="halt" substitutionGroup="sis:halt" type="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        This element can be substituted for the sis:halt element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="SipTerminateType">
    <xs:annotation>
      <xs:documentation>
        Extends the generic sis:TerminateType type with SIP-specific elements and attributes.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sis:TerminateType">
        <xs:choice>
          <xs:element name="reject" type="RejectType"/>
          <xs:element name="forward" type="ForwardType"/>
        </xs:choice>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>
Previous page