Please ignore the below message. I figured out what the problem was. /Roger
-----Original Message----- From: Roger L Costello <coste...@mitre.org> Sent: Friday, December 23, 2022 2:14 PM To: users@daffodil.apache.org Subject: How to drop a bunch of lines, then process some lines, then drop the remaining lines? Hi Folks, My input consists of a bunch of lines, then some lines that contain xxxxPxxxxxxxDxxxxx... (where x = any char), and then a bunch more lines. .... .... xxxxPxxxxxxxDxxxxxxxx xxxxPxxxxxxxDxxxxxxxx xxxxPxxxxxxxDxxxxxxxx ..... ..... I want the output to show only the middle lines. Each of those lines represents an aeronautical sid, Standard Instrument Departure. A sid is identified by P in position 5 and D in position 13. That is, I want to output only the sid lines. I want to dump (hide) the other, non-sid lines. Below is my DFDL schema. When I run it, I get this error message: [error] Parse Error: Failed to populate sid[1]. Cause: Parse Error: Assertion failed: { dfdl:checkConstraints(.) } failed What am I doing wrong please? /Roger <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/"> <dfdl:format alignment="1" alignmentUnits="bytes" emptyValueDelimiterPolicy="none" encoding="ASCII" encodingErrorPolicy="replace" escapeSchemeRef="" fillByte="%SP;" floating="no" ignoreCase="yes" initiatedContent="no" initiator="" leadingSkip="0" lengthKind="delimited" lengthUnits="characters" nilValueDelimiterPolicy="none" occursCountKind="implicit" outputNewLine="%CR;%LF;" representation="text" separator="" separatorSuppressionPolicy="anyEmpty" sequenceKind="ordered" textBidi="no" textPadKind="none" textTrimKind="none" trailingSkip="0" truncateSpecifiedLengthString="no" terminator="" textNumberRep="standard" textStandardBase="10" textStandardZeroRep="0" textNumberRounding="pattern" textStandardExponentRep="E" textNumberCheckPolicy="strict" /> </xs:appinfo> </xs:annotation> <xs:element name="sids"> <xs:complexType> <xs:sequence> <xs:sequence dfdl:hiddenGroupRef="Hide-lines-prior-to-sids" /> <xs:sequence dfdl:separator="%NL;" dfdl:separatorPosition="infix"> <xs:element name="sid" maxOccurs="unbounded" dfdl:lengthKind="delimited"> <xs:complexType> <xs:sequence> <xs:element name="Record_Type" type="validString" dfdl:lengthKind="explicit" dfdl:length="1" /> <xs:element name="Area_Code" type="validString" dfdl:lengthKind="explicit" dfdl:length="3" /> <xs:element name="Section_Code" dfdl:lengthKind="explicit" dfdl:length="1"> <xs:simpleType> <xs:restriction base="validString"> <xs:enumeration value="P" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Blank" dfdl:lengthKind="explicit" dfdl:length="1"> <xs:simpleType> <xs:restriction base="validString"> <xs:enumeration value=" " /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Airport_ICAO_Code_Identifier" type="validString" dfdl:lengthKind="explicit" dfdl:length="4" /> <xs:element name="ICAO_Code" type="validString" dfdl:lengthKind="explicit" dfdl:length="2" /> <xs:element name="Subsection_Code" dfdl:lengthKind="explicit" dfdl:length="1"> <xs:simpleType> <xs:restriction base="validString"> <xs:enumeration value="D" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="remainder" type="validString" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:sequence dfdl:hiddenGroupRef="Hide-lines-after-the-sids" /> </xs:sequence> </xs:complexType> </xs:element> <xs:group name="Hide-lines-prior-to-sids"> <xs:sequence> <xs:element name="junk" type="xs:string" dfdl:lengthKind="pattern" dfdl:lengthPattern=".*?(?=(^.{4}P.{7}[^D])|(^.{4}[^P].{7}.))" dfdl:outputValueCalc="{.}"/> </xs:sequence> </xs:group> <xs:group name="Hide-lines-after-the-sids"> <xs:sequence> <xs:element name="junk" type="xs:string" dfdl:lengthKind="pattern" dfdl:lengthPattern=".*?(?=((^.{4}P.{7}[^D])|(^.{4}[^P].{7}.)))" dfdl:outputValueCalc="{.}"/> </xs:sequence> </xs:group> <xs:simpleType name="validString"> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/"> <dfdl:assert>{ dfdl:checkConstraints(.) }</dfdl:assert> </xs:appinfo> </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:schema>