Perhaps instead of
{ fn:count(.) le 5 }
I should use
{ dfdl:occursIndex() le 5 }
Would that work?
/Roger
From: Beckerle, Mike <[email protected]>
Sent: Tuesday, October 8, 2019 11:31 AM
To: [email protected]
Subject: [EXT] Re: Can an array count itself?
Strange, but I see no reason this wouldn't work. Each element is being
discriminated by whether the current population of the array at the time it is
parsed, is <= 5.
At parse time, fn:count returns the current number of elements in the array.
on Daffodil I believe this will be 1 for the first element, not 0, because
Daffodil will have speculatively attached the element to the array, and then be
proceding to try to parse the child.
That may be the rub. The DFDL spec doesn't really say what the value of
fn:count() is when used in an expression within an array element itself.
________________________________
From: Costello, Roger L. <[email protected]<mailto:[email protected]>>
Sent: Tuesday, October 8, 2019 11:20 AM
To: [email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
Subject: Can an array count itself?
Hello DFDL community,
Can an array count itself? Like this:
<xs:element name="name" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:discriminator test="{ fn:count(.) le 5 }" />
</xs:appinfo>
</xs:annotation>
</xs:element>