Edi segment groups parse error

222 views
Skip to first unread message

Peter

unread,
Mar 11, 2022, 2:19:50 AM3/11/22
to Smooks Users
I get the error below 
caused by: Parse Error: Failed to populate provider-hl[1]. Cause: Parse Error: Initiator 'NM1' not found; clearly NM1 is there - something else is amiss

trying to parse a group of semgents  with the input and  dfdl xsd  shown below:
input:
ISA*00~
GS*HC~
BHT*0019~
NM1*41~
PER*IC~
NM1*40~
HL*1~
NM1*85~
HL*1~
NM1*85~


 dfdl xsd  :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmEdiFmt="http://www.ibm.com/dfdl/EDI/Format">

    <xsd:import namespace="http://www.ibm.com/dfdl/EDI/Format"
                schemaLocation="/EDIFACT-Common/IBM_EDI_Format.dfdl.xsd"/>

    <xsd:annotation>
        <xsd:appinfo source="http://www.ogf.org/dfdl/">
            <dfdl:format ref="ibmEdiFmt:EDIFormat"/>
        </xsd:appinfo>
    </xsd:annotation>

    <xsd:element name="Claim837I">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:sequence dfdl:initiatedContent="yes">
                    <xsd:element dfdl:initiator="ISA" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="isa">
                        <xsd:complexType>
                            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                <xsd:element name="order-id" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element dfdl:initiator="GS" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="gs">
                        <xsd:complexType>
                            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                <xsd:element name="gs-1" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element dfdl:initiator="BHT" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="bht">
                        <xsd:complexType>
                            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                <xsd:element name="bht-1" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element dfdl:initiator="NM1" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="submitter-nm1">
                        <xsd:complexType>
                            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                <xsd:element name="smt-nm1-1" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element dfdl:initiator="PER" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="submitter-per">
                        <xsd:complexType>
                            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                <xsd:element name="smt-per-1" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element dfdl:initiator="NM1" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="receiver-nm1">
                        <xsd:complexType>
                            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                <xsd:element name="rcv-nm-1" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element dfdl:initiator="HL" name="provider-hl" maxOccurs="unbounded" >
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                    <xsd:element name="provider-hl-1" type="xsd:string"/>
                                </xsd:sequence>

                                <xsd:element dfdl:initiator="NM1" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="provider-nm1">
                                    <xsd:complexType>
                                        <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                            <xsd:element name="provider-nm1-1" type="xsd:string"/>
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>

                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>%
Message has been deleted

Peter

unread,
Mar 12, 2022, 11:46:22 AM3/12/22
to Smooks Users

Found the solution, might help someone; Turns out the documentation example for grouping is incorrect; the segment that begins the group should look like below for my example above:

<xsd:element dfdl:initiator="HL" name="provider-hl" maxOccurs="unbounded" >
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element  dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="provider-hl">

                                    <xsd:complexType>
                                        <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                            <xsd:element name="provider-hl-1" type="xsd:string"/>
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>

                                <xsd:element dfdl:initiator="NM1" dfdl:ref="ibmEdiFmt:EDISegmentFormat" name="provider-nm1">
                                    <xsd:complexType>
                                        <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                                            <xsd:element name="provider-nm1-1" type="xsd:string"/>
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>

                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>

Claude Mamo

unread,
Mar 14, 2022, 3:02:22 PM3/14/22
to smook...@googlegroups.com
It's good to hear that you sorted it out Peter! I'm not so sure that the docs are incorrect but rather incomplete. The first posted schema needs an additional sequence enclosing provider-hl-1 like so: 
<xsd:element dfdl:initiator="HL" name="provider-hl" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
            <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentFormat">
                <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
<xsd:element name="provider-hl-1" type="xsd:string"/>
</xsd:sequence>
            </xsd:sequence>

<xsd:element dfdl:initiator="NM1" dfdl:ref="ibmEdiFmt:EDISegmentFormat"
name="provider-nm1">
<xsd:complexType>
<xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
<xsd:element name="provider-nm1-1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
The second sequence should have its format changed to ibmEdiFmt:EDISegmentFormat.

Claude

--
You received this message because you are subscribed to the Google Groups "Smooks Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smooks-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/smooks-user/b5025c9f-7ab0-40c6-bdb9-27909c0a9f6dn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages