Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not able to serialize and deserialize SMPRES message correctly. #219

Open
dvddo opened this issue Jan 15, 2022 · 11 comments
Open

Not able to serialize and deserialize SMPRES message correctly. #219

dvddo opened this issue Jan 15, 2022 · 11 comments

Comments

@dvddo
Copy link

dvddo commented Jan 15, 2022

I have uploaded to my git the project i'm using for testing serialization and deserilization of message. https://github.com/dvddo/EDI.Net.
Issue is i can serialize it but deserialize does not return the same edi content. I have included SMPRES.xsd in the project to better understand issue.

David

@dvddo
Copy link
Author

dvddo commented Jan 15, 2022

UNA:+.? '
UNB+IATB:1+AA0SM+1APPC+160608:1406+AA507987110001+02AXZAOYE60001++T'
UNH+1+SMPRES:96:2:IA+09B0661E'
TVL+291016+DAL+LAX+AA+0001:Y'
EQI++++++378'
CBD+Y+7:29+M++N++A:W+B+C:A+D:A+E+F:W'
ROD+7++A:O:W:K+B:F:K+C:F:A:K+D:R:1:A:K+E:F:K+F:F:W:K'
ROD+8++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+9++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+10++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+11++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+12++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+13++A:Q:8:W+B:Q:8+C:Q:8:A+D:Q:8:A+E:Q:8+F:Q:8:W'
ROD+14++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+15++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+16++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+17++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+18++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+19++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+20++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+21++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+22++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+23++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+24++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+25++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+26++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+27++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+28++A:F:W+B:F+C:F:A+D:F:A+E:F+F:F:W'
ROD+29++A:F:W+B:F+C:R:1:A+D:F:A+E:F+F:F:W'
UNT+28+1'
UNZ+1+UB507987110001'

@cleftheris
Copy link
Contributor

Hi @dvddo and thanks for your interest in EDI.Net. Can you elaborate on what is the the input data, your classes/models and output?

As a side note I would suggest when when you are working on an opensource project to prefer forking instead of re-uploading the project to github. There are numerous reasons you can google some or them but mainly it looks better in the eyes of the maintainer.

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using indice.Edi.Serialization;

namespace indice.Edi.Tests.Models
{
    public class Edifact_SeatMap
    {
        public Message Msg { get; set; }

        [EdiMessage]
        public class Message
        {
            public CBD CabinDetails { get; set; }
            public List<ROD> RowDetails { get; set; }
        }

        /// <summary>
        /// Row Details
        /// </summary>
        [EdiSegment, EdiPath("ROD")]
        public class ROD
        {
            [EdiValue(Path = "*/0")]
            public string SeatRowNumber { get; set; }

            [EdiPath("*/1")]
            public ROD_RowCharacteristicsDetails RowCharacteristicsDetails { get; set; }

            //public List<ROD_SeatOccupationDetails> SeatOccupationDetails { get; set; }
        }

        /// <summary>
        /// C049
        /// </summary>
        [EdiElement]
        public class ROD_RowCharacteristicsDetails
        {
            [EdiValue(Path = "*/1/0")]
            public string RowCharacteristic { get; set; }
            [EdiValue(Path = "*/1/1")]
            public string RowCharacteristic1 { get; set; }
            [EdiValue(Path = "*/1/2")]
            public string RowCharacteristic2 { get; set; }

            [EdiValue(Path = "*/1/3")]
            public string RowCharacteristic3 { get; set; }
            [EdiValue(Path = "*/1/4")]
            public string RowCharacteristic4 { get; set; }
            [EdiValue(Path = "*/1/5")]
            public string RowCharacteristic5 { get; set; }
            [EdiValue(Path = "*/1/6")]
            public string RowCharacteristic6 { get; set; }
            [EdiValue(Path = "*/1/7")]
            public string RowCharacteristic7 { get; set; }
            [EdiValue(Path = "*/1/8")]
            public string RowCharacteristic8 { get; set; }

        }

        /// <summary>
        /// C051
        /// </summary>
        [EdiElement]
        public class ROD_SeatOccupationDetails
        {
            [EdiValue(Path = "*/*/0")]
            public string SeatColumn { get; set; }
            [EdiValue(Path = "*/*/1")]
            public string SeatOccupation { get; set; }
            [EdiValue(Path = "*/*/2")]
            public string SeatCharacteristicCoded { get; set; }

            [EdiValue(Path = "*/*/3")]
            public string SeatCharacteristicCoded1 { get; set; }
            [EdiValue(Path = "*/*/4")]
            public string SeatCharacteristicCoded2 { get; set; }
            [EdiValue(Path = "*/*/5")]
            public string SeatCharacteristicCoded3 { get; set; }
            [EdiValue(Path = "*/*/6")]
            public string SeatCharacteristicCoded4 { get; set; }
            [EdiValue(Path = "*/*/7")]
            public string SeatCharacteristicCoded5 { get; set; }
            [EdiValue(Path = "*/*/8")]
            public string SeatCharacteristicCoded6 { get; set; }

            //there are 30 more record

        }

        //CabinDetails
        /// <summary>
        /// Cabin Details
        /// </summary>
        [EdiSegment, EdiPath("CBD")]
        public class CBD
        {

            [EdiPath("*/0")]
            public CBD_CabinClassDesignation CabinClassDesignation { get; set; }

            [EdiPath("*/1")]
            public CBD_CabinClassSeatRowRangeDetails CabinClassSeatRowRangeDetails { get; set; }

            [EdiValue(Path = "*/2")]
            public string CabinClassLocation { get; set; }

            [EdiPath("*/3")]
            public CBD_SmokingAreaSeatRowRangeDetails SmokingAreaSeatRowRangeDetails { get; set; }

            [EdiValue(Path = "*/4")]
            public string SeatOccupationDefaultIndicator { get; set; }

            [EdiPath("*/5")]
            public CBD_OverwingSeatRowRange OverwingSeatRowRange { get; set; }

            //public List<CBD_CabinWidthAndColumnDetails> CabinWidthAndColumnDetails { get; set; }


        }

        /// <summary>
        /// C342
        /// </summary>
        [EdiElement]
        public class CBD_CabinClassDesignation
        {
            [EdiValue(Path = "*/0/0")]
            public string CabinClassDesignator { get; set; }
            [EdiValue(Path = "*/0/1")]
            public string CharacteristicIdentification { get; set; }
            [EdiValue(Path = "*/0/2")]
            public string CabinClassOfServiceCoded { get; set; }

            [EdiValue(Path = "*/0/3")]
            public string CabinCompartmentDesignator { get; set; }

        }

        /// <summary>
        /// C052
        /// </summary>
        [EdiElement]
        public class CBD_CabinClassSeatRowRangeDetails
        {
            [EdiValue(Path = "*/1/0")]
            public string CabinClassDesignator { get; set; }
            [EdiValue(Path = "*/1/1")]
            public string CharacteristicIdentification { get; set; }

        }

        /// <summary>
        /// C053
        /// </summary>
        [EdiElement]
        public class CBD_SmokingAreaSeatRowRangeDetails
        {
            [EdiValue(Path = "*/3/0")]
            public string SeatRowNumber { get; set; }
            [EdiValue(Path = "*/3/1")]
            public string SeatRowNumber1 { get; set; }

        }

        /// <summary>
        /// C058
        /// </summary>
        [EdiElement]
        public class CBD_OverwingSeatRowRange
        {
            [EdiValue(Path = "*/5/0")]
            public string SeatRowNumber { get; set; }
            [EdiValue(Path = "*/5/1")]
            public string SeatRowNumber1 { get; set; }

        }

        /// <summary>
        /// C054
        /// </summary>
        [EdiElement]
        public class CBD_CabinWidthAndColumnDetails
        {
            [EdiValue(Path = "*/*/0")]
            public string SeatColumn { get; set; }
            [EdiValue(Path = "*/*/1")]
            public string ColumnDescription { get; set; }
            [EdiValue(Path = "*/*/2")]
            public string ColumnDescription1 { get; set; }

        }
    }
}

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

Thanks for the advice. My test file is SeatMapTest.cs.

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using indice.Edi.Tests.Models;
using Xunit;

namespace indice.Edi.Tests
{
    public class SeatMapTest
    {
        [Fact, Trait(Traits.Tag, "EDIFact"), Trait(Traits.Issue, "#999")]
        public void EmptySegment_Withought_A_segmentname_separator_should_parse() {
            var grammar = EdiGrammar.NewEdiFact();
            var interchange = default(Edifact_SeatMap);
            using (var stream = Helpers.GetResourceStream("edifact.Issue.SeatMap.edi")) {
                interchange = new EdiSerializer().Deserialize<Edifact_SeatMap>(new StreamReader(stream), grammar);
            }
            Assert.NotNull(interchange);
        }
    }
}

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

in a different project using model above i get incorrect deserialize edi

UNA:+.? '
UNB+IATB:1+AA0SM+1APPC+160608:1406+AA507987110001+++T'
UNH+1+SMPRES:96:2:IA+09B0661E'
TVL+291016+DAL+LAX+AA+0001:Y'
EQI+'
CBD+Y+7:29+M++N'
ROD+7'
ROD+8'
ROD+9'
ROD+10'
ROD+11'
ROD+12'
ROD+13'
ROD+14'
ROD+15'
ROD+16'
ROD+17'
ROD+18'
ROD+19'
ROD+20'
ROD+21'
ROD+22'
ROD+23'
ROD+24'
ROD+25'
ROD+26'
ROD+27'
ROD+28'
ROD+29'
UNT+28+1'
UNZ+1+UB507987110001'

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

in my other project my model look like this

        public UNB Header { get; set; }
        public SMPRES SeatMap { get; set; }
        public UNZ Footer { get; set; }

        [EdiMessage]
        public class SMPRES
        {
            public UNH MessageHeader { get; set; }
            public MSG MessageType { get; set; }
            public List<TVL_SG> Legs { get; set; }
            public UNT MessageFooter { get; set; }
        }

        [EdiSegmentGroup("TVL", "EQI", "CBD", "ROD_SG")]
        public class TVL_SG : TVL
        {
            public EQI EquipmentInformation { get; set; }
            public CBD CabinDetails { get; set; }
            public List<ROD_SG> RowDetails { get; set; }
        }

        [EdiSegmentGroup("ROD")]
        public class ROD_SG : ROD
        {

        }

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

    /// <summary>
    /// MESSAGE TYPE IDENTIFICATION
    /// </summary>
    [EdiSegment, EdiPath("MSG")]
    public class MSG
    {
        [EdiValue(Path = "*/0/0")]
        public string BusinessFunctionCoded { get; set; }
        [EdiValue(Path = "*/0/1")]
        public string MessageFunctionCoded { get; set; }
        [EdiValue(Path = "*/0/2")]
        public string CodeListQualifier { get; set; }
        [EdiValue(Path = "*/0/3")]
        public string CodeListResponsibleAgencyCoded { get; set; }

        [EdiValue(Path = "*/1/0")]
        public string ResponseTypeCoded { get; set; }

    }

    /// <summary>
    /// MESSAGE TYPE IDENTIFICATION
    /// </summary>
    [EdiSegment, EdiPath("UNB")]
    public class UNB
    {
        #region Interchange Header

        [EdiValue(Path = "*/0/0")]
        public string SyntaxIdentifier { get; set; }

        [EdiValue(Path = "*/0/1")]
        public string SyntaxVersionNumber { get; set; }

        [EdiValue(Path = "*/1/0")]
        public string SenderIdentification { get; set; }

        [EdiValue(Path = "*/1/1")]
        public string SenderPartnerIdentificationCodeQualifier { get; set; }
        [EdiValue(Path = "*/1/2")]
        public string AddressForReverseRouting { get; set; }

        [EdiValue(Path = "*/2/0")]
        public string RecipientIdentification { get; set; }

        [EdiValue(Path = "*/2/1")]
        public string RecipientPartnerIdentificationCodeQualifier { get; set; }
        [EdiValue(Path = "*/2/2")]
        public string RoutingAddress { get; set; }

        [EdiValue(Path = "*/3/0")]
        public string DateOfPreparation { get; set; }

        [EdiValue(Path = "*/3/1")]
        public string TimeOfPreparation { get; set; }

        [EdiValue(Path = "*/4")]
        public string InterchangeControlReference { get; set; }

        [EdiValue(Path = "*/7")]
        public string ProcessingPriorityCode { get; set; }
        #endregion Interchange Header

    }

    /// <summary>
    /// MESSAGE TYPE IDENTIFICATION
    /// </summary>
    [EdiSegment, EdiPath("UNH")]
    public class UNH
    {
        #region Message Header Info

        [EdiValue(Path = "*/0")]
        public string MessageReferenceNumber { get; set; }

        [EdiValue(Path = "*/1/0")]
        public string MessageType { get; set; }

        [EdiValue(Path = "*/1/1")]
        public string MessageTypeVersionNumber { get; set; }

        [EdiValue(Path = "*/1/2")]
        public string MessageTypeReleaseNumber { get; set; }

        [EdiValue(Path = "*/1/3")]
        public string ControllingAgency { get; set; }

        [EdiValue(Path = "*/2/0")]
        public string CommonAccessReference { get; set; }
        #endregion Message Header Info

    }

    /// <summary>
    /// departure date/time, origin, destination, operating airline code, flight
    /// number, and operation suffix.
    /// </summary>
    [EdiSegment, EdiPath("TVL")]
    public class TVL
    {

        [EdiValue("9(6)", Path = "*/0/0", Format = "ddMMyy", Description = "Date")]
        public string FirstDate { get; set; }
        [EdiValue("9(4)", Path = "*/0/1", Format = "HHmm", Description = "Time")]
        public string FirstTime { get; set; }


        private DateTime? _Arrival;
        [EdiValue("9(6)", Path = "*/0/2", Format = "ddMMyy", Description = "Date")]
        public string SecodnDate { get; set; }
        [EdiValue("9(4)", Path = "*/0/3", Format = "HHmm", Description = "Time")]
        public string SecondTime { get; set; }


        [EdiValue("X(3)", Path = "*/1/0")]
        public string OriginAirport { get; set; }
        [EdiValue("X(3)", Path = "*/2/0")]
        public string DestinationAirport { get; set; }
        [EdiValue("X(3)", Path = "*/3/0")]
        public string OperatingAirlineCode { get; set; }

        [EdiValue("X(10)", Path = "*/4/0")]
        public string FlightNumber { get; set; }

        [EdiValue("X(1)", Path = "*/4/1")]
        public string BookingCode { get; set; }

        [EdiValue("X(1)", Path = "*/7/0")]
        public string ProcessingIndicatorCoded { get; set; }

    }


    /// <summary>
    /// C048
    /// </summary>
    [EdiElement]
    public class EQI_ConfigurationDetails
    {
        [EdiValue(Path = "*/0/0")]
        public string CabinClassDesignator { get; set; }
        [EdiValue(Path = "*/0/1")]
        public string Seats_NumberOfSeats { get; set; }
        [EdiValue(Path = "*/0/2")]
        public string CharacteristicIdentification { get; set; }

        [EdiValue(Path = "*/0/3")]
        public string CharacteristicIdentification1 { get; set; }
        [EdiValue(Path = "*/0/4")]
        public string CharacteristicIdentification2 { get; set; }
        [EdiValue(Path = "*/0/5")]
        public string CharacteristicIdentification3 { get; set; }
        [EdiValue(Path = "*/0/6")]
        public string CharacteristicIdentification4 { get; set; }
        // There are 24 more CharacteristicIdentification
    }

    /// <summary>
    /// Row Details
    /// </summary>
    [EdiSegment, EdiPath("ROD")]
    public class ROD
    {
        [EdiValue(Path = "*/0")]
        public string SeatRowNumber { get; set; }

        [EdiPath("*/1")]
        public ROD_RowCharacteristicsDetails RowCharacteristicsDetails { get; set; }

       // public List<ROD_SeatOccupationDetails> SeatOccupationDetails { get; set; }
    }

    /// <summary>
    /// C049
    /// </summary>
    [EdiElement]
    public class ROD_RowCharacteristicsDetails
    {
        [EdiValue(Path = "*/1/0")]
        public string RowCharacteristic { get; set; }
        [EdiValue(Path = "*/1/1")]
        public string RowCharacteristic1 { get; set; }
        [EdiValue(Path = "*/1/2")]
        public string RowCharacteristic2 { get; set; }

        [EdiValue(Path = "*/1/3")]
        public string RowCharacteristic3 { get; set; }
        [EdiValue(Path = "*/1/4")]
        public string RowCharacteristic4 { get; set; }
        [EdiValue(Path = "*/1/5")]
        public string RowCharacteristic5 { get; set; }
        [EdiValue(Path = "*/1/6")]
        public string RowCharacteristic6 { get; set; }
        [EdiValue(Path = "*/1/7")]
        public string RowCharacteristic7 { get; set; }
        [EdiValue(Path = "*/1/8")]
        public string RowCharacteristic8 { get; set; }
        
    }

    /// <summary>
    /// C051
    /// </summary>
    [EdiElement]
    public class ROD_SeatOccupationDetails
    {
        [EdiValue(Path = "*/*/0")]
        public string SeatColumn { get; set; }
        [EdiValue(Path = "*/*/1")]
        public string SeatOccupation { get; set; }
        [EdiValue(Path = "*/*/2")]
        public string SeatCharacteristicCoded { get; set; }

        [EdiValue(Path = "*/*/3")]
        public string SeatCharacteristicCoded1 { get; set; }
        [EdiValue(Path = "*/*/4")]
        public string SeatCharacteristicCoded2 { get; set; }
        [EdiValue(Path = "*/*/5")]
        public string SeatCharacteristicCoded3 { get; set; }
        [EdiValue(Path = "*/*/6")]
        public string SeatCharacteristicCoded4 { get; set; }
        [EdiValue(Path = "*/*/7")]
        public string SeatCharacteristicCoded5 { get; set; }
        [EdiValue(Path = "*/*/8")]
        public string SeatCharacteristicCoded6 { get; set; }

        //there are 30 more record

    }

    //CabinDetails
    /// <summary>
    /// Cabin Details
    /// </summary>
    [EdiSegment, EdiPath("CBD")]
    public class CBD
    {

        [EdiPath("*/0")]
        public CBD_CabinClassDesignation CabinClassDesignation { get; set; }
        
        [EdiPath("*/1")]
        public CBD_CabinClassSeatRowRangeDetails CabinClassSeatRowRangeDetails { get; set; }
        
        [EdiValue(Path = "*/2")]
        public string CabinClassLocation { get; set; }

        [EdiPath("*/3")]
        public CBD_SmokingAreaSeatRowRangeDetails SmokingAreaSeatRowRangeDetails { get; set; }

        [EdiValue(Path = "*/4")]
        public string SeatOccupationDefaultIndicator { get; set; }

        [EdiPath("*/5")]
        public CBD_OverwingSeatRowRange OverwingSeatRowRange { get; set; }

        //public List<CBD_CabinWidthAndColumnDetails> CabinWidthAndColumnDetails { get; set; }


    }

    /// <summary>
    /// C342
    /// </summary>
    [EdiElement]
    public class CBD_CabinClassDesignation
    {
        [EdiValue(Path = "*/0/0")]
        public string CabinClassDesignator { get; set; }
        [EdiValue(Path = "*/0/1")]
        public string CharacteristicIdentification { get; set; }
        [EdiValue(Path = "*/0/2")]
        public string CabinClassOfServiceCoded { get; set; }

        [EdiValue(Path = "*/0/3")]
        public string CabinCompartmentDesignator { get; set; }

    }

    /// <summary>
    /// C052
    /// </summary>
    [EdiElement]
    public class CBD_CabinClassSeatRowRangeDetails
    {
        [EdiValue(Path = "*/1/0")]
        public string CabinClassDesignator { get; set; }
        [EdiValue(Path = "*/1/1")]
        public string CharacteristicIdentification { get; set; }

    }

    /// <summary>
    /// C053
    /// </summary>
    [EdiElement]
    public class CBD_SmokingAreaSeatRowRangeDetails
    {
        [EdiValue(Path = "*/3/0")]
        public string SeatRowNumber { get; set; }
        [EdiValue(Path = "*/3/1")]
        public string SeatRowNumber1 { get; set; }

    }

    /// <summary>
    /// C058
    /// </summary>
    [EdiElement]
    public class CBD_OverwingSeatRowRange
    {
        [EdiValue(Path = "*/5/0")]
        public string SeatRowNumber { get; set; }
        [EdiValue(Path = "*/5/1")]
        public string SeatRowNumber1 { get; set; }

    }

    /// <summary>
    /// C054
    /// </summary>
    [EdiElement]
    public class CBD_CabinWidthAndColumnDetails
    {
        [EdiValue(Path = "*/*/0")]
        public string SeatColumn { get; set; }
        [EdiValue(Path = "*/*/1")]
        public string ColumnDescription { get; set; }
        [EdiValue(Path = "*/*/2")]
        public string ColumnDescription1 { get; set; }

    }

    [EdiSegment, EdiPath("UNT")]
    public class UNT
    {
        // 0074 : NOMBRE DE SEGMENTS DANS LE MESSAGE
        [EdiValue(Path = "*/0/0", Mandatory = true)]
        public int NumberOfSegmentsInAMessage { get; set; }
        // 0062 : NUMÉRO DE RÉFÉRENCE DU MESSAGE
        [EdiValue("X(14)", Path = "*/1/0", Mandatory = true)]
        public string MessageReferenceNumber { get; set; }
    }

    // Fin d'interchange
    [EdiSegment, EdiPath("UNZ")]
    public class UNZ
    {
        // 0036 : COMPTEUR DE CONTROLE DE L’INTERCHANGE
        [EdiValue("X(1)", Path = "*/0/0", Mandatory = true)]
        public int InterchangeControlCount { get; set; }
        // 0020 : REFERENCE DE CONTROLE DE L’INTERCHANGE
        [EdiValue("X(14)", Path = "*/1/0", Mandatory = true)]
        public string InterchangeControlReference { get; set; }
    }

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

The schema for SMPRES

<xsd:complexType name="SMPRES">
	<xsd:annotation>
		<xsd:appinfo>96-2 SMPRES</xsd:appinfo>
		<xsd:documentation>Seat Map Response</xsd:documentation>
	</xsd:annotation>
	<xsd:sequence>
		<xsd:element name="UNH-MessageHeader" type="UNH"/>
		<xsd:element name="RAD-ResponseAnalysisDetails" type="RAD" minOccurs="0"/>
		<xsd:element name="ERD-ErrorInformation" type="ERD" minOccurs="0"/>
		<xsd:element name="WAD-WarningInformation" type="WAD" minOccurs="0"/>
		<xsd:element name="SRP-SeatRequestParameters" type="SRP" minOccurs="0"/>
		<xsd:element name="GROUP_1" type="GROUP_1" minOccurs="0" maxOccurs="5"/>
		<xsd:element name="UNT-MessageTrailer" type="UNT"/>
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GROUP_1">
	<xsd:sequence>
		<xsd:element name="TVL-TravelProductInformation" type="TVL"/>
		<xsd:element name="ERD-ErrorInformation" type="ERD" minOccurs="0"/>
		<xsd:element name="WAD-WarningInformation" type="WAD" minOccurs="0"/>
		<xsd:element name="APD-AdditionalProductDetails" type="APD" minOccurs="0"/>
		<xsd:element name="EQI-EquipmentInformation" type="EQI" minOccurs="0"/>
		<xsd:element name="GROUP_2" type="GROUP_2" minOccurs="0" maxOccurs="9"/>
		<xsd:element name="GROUP_3" type="GROUP_3" minOccurs="0" maxOccurs="unbounded"/>
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GROUP_2">
	<xsd:sequence>
		<xsd:element name="CBD-CabinDetails" type="CBD"/>
		<xsd:element name="EQN-NumberOfUnits" type="EQN" minOccurs="0"/>
		<xsd:element name="CBF-CabinFacilities" type="CBF" minOccurs="0" maxOccurs="9"/>
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GROUP_3">
	<xsd:sequence>
		<xsd:element name="ROD-RowDetails" type="ROD"/>
		<xsd:element name="CBF-CabinFacilities" type="CBF" minOccurs="0" maxOccurs="9"/>
	</xsd:sequence>
</xsd:complexType>

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

<xsd:complexType name="CBD">
	<xsd:sequence>
		<xsd:element name="CBD01-CabinClassDesignation">
			<xsd:complexType><!--C342-->
				<xsd:sequence>
					<xsd:element name="CBD0101-CabinClassDesignator" type="type9854"/>
					<xsd:element name="CBD0102-CharacteristicIdentification" type="type7037" minOccurs="0"/>
					<xsd:element name="CBD0103-CabinClassOfServiceCoded" type="type9873" minOccurs="0"/>
					<xsd:element name="CBD0104-CabinCompartmentDesignator" type="type9992" minOccurs="0"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="CBD02-CabinClassSeatRowRangeDetails">
			<xsd:complexType><!--C052-->
				<xsd:sequence>
					<xsd:element name="CBD0201-SeatRowNumber" type="type9830"/>
					<xsd:element name="CBD0202-SeatRowNumber" type="type9830"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="CBD03-CabinClassLocation" type="type9863" minOccurs="0"/>
		<xsd:element name="CBD04-SmokingAreaSeatRowRangeDetails" minOccurs="0">
			<xsd:complexType><!--C053-->
				<xsd:sequence>
					<xsd:element name="CBD0401-SeatRowNumber" type="type9830"/>
					<xsd:element name="CBD0402-SeatRowNumber" type="type9830"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="CBD05-SeatOccupationDefaultIndicator" type="type9883" minOccurs="0"/>
		<xsd:element name="CBD06-OverwingSeatRowRange" minOccurs="0">
			<xsd:complexType><!--C058-->
				<xsd:sequence>
					<xsd:element name="CBD0601-SeatRowNumber" type="type9830"/>
					<xsd:element name="CBD0602-SeatRowNumber" type="type9830"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="CBD07-CabinWidthAndColumnDetails" minOccurs="0" maxOccurs="12">
			<xsd:complexType><!--C054-->
				<xsd:sequence>
					<xsd:element name="CBD0701-SeatColumn" type="type9831"/>
					<xsd:element name="CBD0702-ColumnDescription" type="type9882" minOccurs="0"/>
					<xsd:element name="CBD0703-ColumnDescription" type="type9882" minOccurs="0"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
	</xsd:sequence>
</xsd:complexType>

@dvddo
Copy link
Author

dvddo commented Jan 17, 2022

<xsd:complexType name="ROD">
	<xsd:sequence>
		<xsd:element name="ROD01-SeatRowNumber" type="type9830"/>
		<xsd:element name="ROD02-RowCharacteristicsDetails" minOccurs="0">
			<xsd:complexType><!--C049-->
				<xsd:sequence>
					<xsd:element name="ROD0201-RowCharacteristic" type="type9864"/>
					<xsd:element name="ROD0202-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0203-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0204-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0205-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0206-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0207-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0208-RowCharacteristic" type="type9864" minOccurs="0"/>
					<xsd:element name="ROD0209-RowCharacteristic" type="type9864" minOccurs="0"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="ROD03-SeatOccupationDetails" minOccurs="0" maxOccurs="12">
			<xsd:complexType><!--C051-->
				<xsd:sequence>
					<xsd:element name="ROD0301-SeatColumn" type="type9831"/>
					<xsd:element name="ROD0302-SeatOccupation" type="type9865" minOccurs="0"/>
					<xsd:element name="ROD0303-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0304-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0305-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0306-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0307-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0308-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0309-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0310-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0311-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0312-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0313-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0314-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0315-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0316-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0317-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0318-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0319-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0320-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0321-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0322-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0323-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0324-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0325-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0326-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0327-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0328-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0329-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0330-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0331-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0332-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0333-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0334-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0335-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0336-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0337-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0338-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0339-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
					<xsd:element name="ROD0340-SeatCharacteristicCoded" type="type9825" minOccurs="0"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
	</xsd:sequence>
</xsd:complexType>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants