Commit 9a284553 authored by Jason Graham's avatar Jason Graham
Browse files

Upload New File

parent 847deb40
Loading
Loading
Loading
Loading
+170 −0
Original line number Original line Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:etsi="http://uri.etsi.org/03280/common/2017/07" xmlns:common="http://uri.etsi.org/03120/common/2016/02/Common" xmlns:core="http://uri.etsi.org/03120/common/2019/10/Core" xmlns="http://uri.etsi.org/03120/common/2022/07/PayloadModSS" targetNamespace="http://uri.etsi.org/03120/common/2022/07/PayloadModSS" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:import namespace="http://uri.etsi.org/03120/common/2016/02/Common"/>
  <xs:import namespace="http://uri.etsi.org/03120/common/2019/10/Core"/>
  <xs:import namespace="http://uri.etsi.org/03280/common/2017/07"/>
  <xs:complexType name="PayloadModificationProfileObject">
      <xs:complexContent>
          <xs:extension base="core:HI1Object">
              <xs:sequence>
                  <xs:group ref="PayloadModificationProfileObjectGroup"/>
              </xs:sequence>
          </xs:extension>
      </xs:complexContent>
  </xs:complexType>
  <xs:group name="PayloadModificationProfileObjectGroup">
      <xs:sequence>
          <xs:element name="PayloadModificationProfielName" type="etsi:ShortString" minOccurs="0"/>
          <xs:element name="PayloadModification" type="ListOfPayloadModificationReferences" minOccurs="0"/>
      </xs:sequence>
  </xs:group>
  <xs:complexType name="ListOfPayloadModificationReferences">
      <xs:sequence>
          <xs:element name="PayloadModificationReference" type="PayloadModificationReference" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PayloadModificationReference">
      <xs:sequence>
          <xs:element name="ObjectIdentifier" type="core:ObjectIdentifier"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PayloadModificationObject">
      <xs:complexContent>
          <xs:extension base="core:HI1Object">
              <xs:sequence>
                  <xs:group ref="PayloadModificationObjectGroup"/>
              </xs:sequence>
          </xs:extension>
      </xs:complexContent>
  </xs:complexType>
  <xs:group name="PayloadModificationObjectGroup">
      <xs:sequence>
          <xs:element name="PayloadModification" type="ModificationType" minOccurs="1"/>
      </xs:sequence>
  </xs:group>
  <xs:complexType name="ModificationType">
      <xs:choice maxOccurs="unbounded">
          <xs:element name="sIPHeader" type="SIPHeaderModification"/>
          <!--<xs:element name="sIPBody" type="SIPBodyModification"/>
          <xs:element name="XML" type="XMLModification"/>
          <xs:element name="jSON" type="JSONModification"/>
          <xs:element name="mIMEHeader" type="MIMEHeadeModification"/>
          <xs:element name="mIMEBody" type="MIMEBodyModification"/>
          <xs:element name="sMSTP" type="SMSTPModification"/>
          <xs:element name="sMSRP" type="SMSRPModification"/>
          <xs:element name="aBNFField" type="ABNFFieldModification"/>
          <xs:element name="iRIRecord" type="IRIRecordModification"/>
          <xs:element name="iRIFieldName" type="xIRIRecordModification"/>-->
      </xs:choice>
  </xs:complexType>
  <xs:complexType name="SIPHeaderModification">
    <xs:sequence>
      <xs:element name="SIPHeaderName" type="xs:string" maxOccurs="unbounded"/> <!--may want to make this a structure with operator and criteria (as suggested in my last structure)-->
      <xs:element name="SIPHeaderModificationDetails" type="SIPHeaderModificationDetails"/> <!-- May want to make this a profile for re-use reasons, but it would make the XML tough to read-->
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SIPHeaderModificationDetails">
    <xs:sequence>
      <xs:element name="ModificationScope" type="SIPHeaderModificationScope"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SIPHeaderModificationScope">
    <xs:choice>
      <xs:choice>
        <xs:element name="FullHeader" type="SIPHeaderModificationAction"/>
        <xs:element name="PartialHeader" type="ABNFModification" maxOccurs="unbounded"/>
      </xs:choice>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="ABNFModification">
    <xs:sequence>
      <xs:element name="ABNFRuleName" type="xs:string" maxOccurs="unbounded"/>
      <!--may want to make this a structure with operator and criteria (as suggested in my last structure)-->
      <xs:element name="ABNFModificationDetails" type="ABNFModificationAction"/>
      <!-- May want to make this a profile for re-use reasons, but it would make the XML tough to read-->
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ABNFModificationAction">
    <xs:choice>
      <xs:element name="GenericAction" type="GenericModificationAction"/>
      <xs:element name="RedactIP" type="EmptyElement"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="SIPHeaderModificationAction">
    <xs:choice>
      <xs:element name="GenericAction" type="GenericModificationAction"/>
    </xs:choice>
  </xs:complexType>
    <xs:complexType name="GenericModificationAction">
        <xs:choice>
            <xs:element name="remove" type="EmptyElement"/>
            <xs:element name="replaceWithCharacters" type="xs:string"/>
            <xs:element name="replaceWithOctets" type="xs:hexBinary"/>
            <xs:element name="replaceWithBits" type="BitString"/>
        </xs:choice>
    </xs:complexType>
    <xs:simpleType name="EmptyElement">
        <xs:restriction base="xs:string">
            <xs:enumeration value=""></xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="BitString">
        <xs:restriction base="xs:token">
            <xs:pattern value="[0-1]{0,}"/>
        </xs:restriction>
    </xs:simpleType>
  <!--<xs:complexType name="LocationSelectionCriteria">
    <xs:sequence>
      <xs:element name="Operator" type="CriteriaOperator"/>
      <xs:element name="Criteria" type="xs:string" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
    <xs:complexType name="SMSTPLocation">
        <xs:choice>
            <xs:element name="SMSTPDU" type="EmptyElement"/>
            <xs:element name="SMSTPDUField" type="xs:string"/>
            <xs:element name="SMSTPDUFieldIEI" type="xs:hexBinary"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="SMSRPLocation">
        <xs:choice>
            <xs:element name="SMSRPDU" type="EmptyElement"/>
            <xs:element name="SMSRPDUField" type="xs:string"/>
            <xs:element name="SMSTPDUFieldIEI" type="xs:hexBinary"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="MIMEBody">
      <xs:choice>
        <xs:element name="FullBody" type="EmptyElement"/>
        <xs:element name="BodyPart" type="BodyPartCriteria"/>
      </xs:choice>
    </xs:complexType>
    <xs:complexType name="SIPBody">
      <xs:choice>
        <xs:element name="FullBody" type="EmptyElement"/>
        <xs:element name="BodyPart" type="BodyPartCriteria"/>
      </xs:choice>
    </xs:complexType>
    <xs:complexType name="BodyPartCriteria">
      <xs:sequence>
        <xs:element name="ListOfContentTypes" type="ListOfContentTypes"/>
      </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ListOfContentTypes">
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="ContentType" type="LocationSelectionCriteria"/>
      </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="CriteriaOperator">
      <xs:restriction base="xs:string">
        <xs:enumeration value="equalTo"/>
        <xs:enumeration value="notEqualTo"/>
        <xs:enumeration value="contains"/>
        <xs:enumeration value="doesNotContain"/>
        <xs:enumeration value="like"/>
        <xs:enumeration value="notLike"/>
        <xs:enumeration value="in"/>
        <xs:enumeration value="notIn"/>
      </xs:restriction>
    </xs:simpleType>-->
</xs:schema>