Correct, lengthKind="endOfParent" has not bee implemented yet.
As an alternative that we do support, you should be able to use
dfdl:lengthKind="delimited" for the hexBinary user data. In this case,
there's no delimiter, but parent length sort of acts like one. For example:
<xs:element name="Parent"
dfdl:lengthKind="explicit" dfdl:length="4"
dfdl:lengthUnits="bytes">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="xs:hexBinary"
dfdl:lengthKind="explicit" dfdl:length="1"
dfdl:lengthUnits="bytes" />
<xs:element name="UserData" type="xs:hexBinary"
dfdl:lengthKind="delimited" dfdl:encoding="ISO-8859-1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
So the parent element is 4 bytes and the header is 1 byte. If we parse
the data:
0xAA BB CC DD
We get the following infoset
<Parent>
<Header>AA</Header>
<UserData>BBCCDD</UserData>
</Parent>
And the UserData is the remaining three bytes. Using
lengthKind="endOfParent" would probably have better performance if we
implemented it, but this should give the same result for the hexBinary
blob at the end.
- Steve
On 1/22/19 4:16 AM, Christofer Dutz wrote:
> Hi all,
>
> I am stuck with a little problem … I am reading a packet, which is usually
> contained inside another. Therefore it doesn’t provide any means of providing
> it’s length.
> So the packet is just a small header + binary data … now I want to read “all
> the rest” after the header into a field “userData”.
> In the DFDL documentation at IBM I could read that the
> lengthKind=”endOfParent” would be what I’m looking for.
>
> Unfortunately this doesn’t seem to be supported … so how can I achieve the
> same with implemented options?
>
> Chris
>